#pragma GCC optimize("O3,unroll-loops,inline")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt,fma")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
#define rep(i, a, b) for (int i = (a); i < (b); ++i)
#define per(i, a, b) for (int i = (b) - 1; i >= (a); --i)
#define z(x) ((int)(x).size())
#define ADD(u, v) { u += v; if (u >= P) u -= P; }
#define SUB(u, v) { u -= v; if (u < 0) u += P; }
const int P = 998244353, G = 3, MX = 1 << 20;
int fc[MX], ifc[MX], rt[MX], irt[MX], iv2[MX];
alignas(64) static int na[MX * 2], nb[MX * 2];
ll pw(ll a, ll b) {
ll r = 1;
a %= P;
for (; b; b >>= 1, a = a * a % P) {
if (b & 1) r = r * a % P;
}
return r;
}
void pre() {
fc[0] = 1;
rep(i, 1, MX) fc[i] = (ll)fc[i - 1] * i % P;
ifc[MX - 1] = pw(fc[MX - 1], P - 2);
per(i, 0, MX - 1) ifc[i] = (ll)ifc[i + 1] * (i + 1) % P;
rt[1] = irt[1] = 1;
for (int k = 2; k < MX; k <<= 1) {
int w = pw(G, (P - 1) / (2 * k)), iw = pw(w, P - 2);
rt[k] = irt[k] = 1;
rep(i, 1, k) {
rt[k + i] = (ll)rt[k + i - 1] * w % P;
irt[k + i] = (ll)irt[k + i - 1] * iw % P;
}
}
iv2[0] = 1;
int h = (P + 1) / 2;
rep(i, 1, MX) iv2[i] = (ll)iv2[i - 1] * h % P;
}
void ntt(int* a, int n, int f) {
for (int i = 1, j = 0; i < n; i++) {
int b = n >> 1;
for (; j & b; b >>= 1) j ^= b;
j ^= b;
if (i < j) swap(a[i], a[j]);
}
int* rv = (f == 1) ? rt : irt;
for (int len = 1; len < n; len <<= 1) {
for (int i = 0; i < n; i += 2 * len) {
rep(j, 0, len) {
int u = a[i + j], v = (ll)a[i + j + len] * rv[len + j] % P;
a[i + j] = u;
ADD(a[i + j], v);
a[i + j + len] = u;
SUB(a[i + j + len], v);
}
}
}
}
void ts(int* a, int n, int c) {
rep(k, 0, n) na[n - 1 - k] = (ll)a[k] * fc[k] % P;
int s = 1;
while (s < 2 * n - 1) s <<= 1;
rep(k, n, s) na[k] = 0;
int ck = 1;
rep(k, 0, n) {
nb[k] = (ll)ck * ifc[k] % P;
ck = (ll)ck * c % P;
}
rep(k, n, s) nb[k] = 0;
ntt(na, s, 1);
ntt(nb, s, 1);
rep(k, 0, s) na[k] = (ll)na[k] * nb[k] % P;
ntt(na, s, -1);
int g = __builtin_ctz(s), w = iv2[g];
rep(k, 0, n) a[k] = (ll)na[n - 1 - k] * w % P * ifc[k] % P;
}
vector<int> ml(vector<int> a, vector<int> b) {
int n = z(a) + z(b) - 1, s = 1;
while (s < n) s <<= 1;
rep(k, 0, z(a)) na[k] = a[k];
rep(k, z(a), s) na[k] = 0;
rep(k, 0, z(b)) nb[k] = b[k];
rep(k, z(b), s) nb[k] = 0;
ntt(na, s, 1);
ntt(nb, s, 1);
rep(k, 0, s) na[k] = (ll)na[k] * nb[k] % P;
ntt(na, s, -1);
int g = __builtin_ctz(s), w = iv2[g];
vector<int> r(n);
rep(k, 0, n) r[k] = (ll)na[k] * w % P;
return r;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
pre();
int n, q;
cin >> n >> q;
vector<int> a(n + 1);
rep(i, 0, n + 1) cin >> a[i];
int l = 0, s = 0, o = 0;
auto fl = [&]() {
if (s) {
if (o) {
a.erase(a.begin(), a.begin() + min(o, z(a)));
o = 0;
}
if (a.empty()) {
a.push_back(0);
return;
}
int m = z(a);
ts(a.data(), m, s);
s = 0;
}
};
rep(ii, 0, q) {
char op;
cin >> op;
if (op == 'D') {
if (s) {
fl();
if (!a.empty()) a.erase(a.begin());
if (a.empty()) a.push_back(0);
} else {
o++;
if (o >= z(a)) {
a.assign(1, 0);
o = 0;
}
}
} else if (op == 'S') {
ll c;
cin >> c;
c ^= l;
if (o) {
a.erase(a.begin(), a.begin() + min(o, z(a)));
if (a.empty()) a.push_back(0);
o = 0;
}
s = (int)((s + c % P) % P);
} else if (op == 'M') {
fl();
if (o) {
a.erase(a.begin(), a.begin() + min(o, z(a)));
o = 0;
}
if (a.empty()) a.push_back(0);
int m;
cin >> m;
vector<int> b(m);
rep(i, 0, m) cin >> b[i];
a = ml(a, b);
if (z(a) >= MX) a.resize(MX);
} else {
ll t;
cin >> t;
t ^= l;
int k = (int)t + o, v = z(a);
ll e = 0;
if (k < v) {
if (!s) {
e = (ll)fc[(int)t % MX] * a[k] % P;
} else {
ll j = 1;
for (int i = 0; i + k < v; i++) {
e = (e + (ll)a[i + k] * fc[i + k] % P * ifc[i] % P * j) % P;
j = (ll)j * s % P;
}
e = e % P * (ll)fc[(int)t % MX] % P * ifc[k % MX] % P;
}
}
l = (int)e;
cout << e << '\n';
}
}
return 0;
}
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyxpbmxpbmUiKQojcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIsbHpjbnQscG9wY250LGZtYSIpCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwoKI2RlZmluZSByZXAoaSwgYSwgYikgZm9yIChpbnQgaSA9IChhKTsgaSA8IChiKTsgKytpKQojZGVmaW5lIHBlcihpLCBhLCBiKSBmb3IgKGludCBpID0gKGIpIC0gMTsgaSA+PSAoYSk7IC0taSkKI2RlZmluZSB6KHgpICgoaW50KSh4KS5zaXplKCkpCgojZGVmaW5lIEFERCh1LCB2KSB7IHUgKz0gdjsgaWYgKHUgPj0gUCkgdSAtPSBQOyB9CiNkZWZpbmUgU1VCKHUsIHYpIHsgdSAtPSB2OyBpZiAodSA8IDApIHUgKz0gUDsgfQoKY29uc3QgaW50IFAgPSA5OTgyNDQzNTMsIEcgPSAzLCBNWCA9IDEgPDwgMjA7CmludCBmY1tNWF0sIGlmY1tNWF0sIHJ0W01YXSwgaXJ0W01YXSwgaXYyW01YXTsKYWxpZ25hcyg2NCkgc3RhdGljIGludCBuYVtNWCAqIDJdLCBuYltNWCAqIDJdOwoKbGwgcHcobGwgYSwgbGwgYikgewogICAgbGwgciA9IDE7CiAgICBhICU9IFA7CiAgICBmb3IgKDsgYjsgYiA+Pj0gMSwgYSA9IGEgKiBhICUgUCkgewogICAgICAgIGlmIChiICYgMSkgciA9IHIgKiBhICUgUDsKICAgIH0KICAgIHJldHVybiByOwp9Cgp2b2lkIHByZSgpIHsKICAgIGZjWzBdID0gMTsKICAgIHJlcChpLCAxLCBNWCkgZmNbaV0gPSAobGwpZmNbaSAtIDFdICogaSAlIFA7CiAgICAKICAgIGlmY1tNWCAtIDFdID0gcHcoZmNbTVggLSAxXSwgUCAtIDIpOwogICAgcGVyKGksIDAsIE1YIC0gMSkgaWZjW2ldID0gKGxsKWlmY1tpICsgMV0gKiAoaSArIDEpICUgUDsKICAgIAogICAgcnRbMV0gPSBpcnRbMV0gPSAxOwogICAgZm9yIChpbnQgayA9IDI7IGsgPCBNWDsgayA8PD0gMSkgewogICAgICAgIGludCB3ID0gcHcoRywgKFAgLSAxKSAvICgyICogaykpLCBpdyA9IHB3KHcsIFAgLSAyKTsKICAgICAgICBydFtrXSA9IGlydFtrXSA9IDE7CiAgICAgICAgcmVwKGksIDEsIGspIHsKICAgICAgICAgICAgcnRbayArIGldID0gKGxsKXJ0W2sgKyBpIC0gMV0gKiB3ICUgUDsKICAgICAgICAgICAgaXJ0W2sgKyBpXSA9IChsbClpcnRbayArIGkgLSAxXSAqIGl3ICUgUDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGl2MlswXSA9IDE7CiAgICBpbnQgaCA9IChQICsgMSkgLyAyOwogICAgcmVwKGksIDEsIE1YKSBpdjJbaV0gPSAobGwpaXYyW2kgLSAxXSAqIGggJSBQOwp9Cgp2b2lkIG50dChpbnQqIGEsIGludCBuLCBpbnQgZikgewogICAgZm9yIChpbnQgaSA9IDEsIGogPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IGIgPSBuID4+IDE7CiAgICAgICAgZm9yICg7IGogJiBiOyBiID4+PSAxKSBqIF49IGI7CiAgICAgICAgaiBePSBiOwogICAgICAgIGlmIChpIDwgaikgc3dhcChhW2ldLCBhW2pdKTsKICAgIH0KICAgIAogICAgaW50KiBydiA9IChmID09IDEpID8gcnQgOiBpcnQ7CiAgICBmb3IgKGludCBsZW4gPSAxOyBsZW4gPCBuOyBsZW4gPDw9IDEpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkgKz0gMiAqIGxlbikgewogICAgICAgICAgICByZXAoaiwgMCwgbGVuKSB7CiAgICAgICAgICAgICAgICBpbnQgdSA9IGFbaSArIGpdLCB2ID0gKGxsKWFbaSArIGogKyBsZW5dICogcnZbbGVuICsgal0gJSBQOwogICAgICAgICAgICAgICAgYVtpICsgal0gPSB1OyAKICAgICAgICAgICAgICAgIEFERChhW2kgKyBqXSwgdik7CiAgICAgICAgICAgICAgICBhW2kgKyBqICsgbGVuXSA9IHU7IAogICAgICAgICAgICAgICAgU1VCKGFbaSArIGogKyBsZW5dLCB2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCB0cyhpbnQqIGEsIGludCBuLCBpbnQgYykgewogICAgcmVwKGssIDAsIG4pIG5hW24gLSAxIC0ga10gPSAobGwpYVtrXSAqIGZjW2tdICUgUDsKICAgIAogICAgaW50IHMgPSAxOwogICAgd2hpbGUgKHMgPCAyICogbiAtIDEpIHMgPDw9IDE7CiAgICByZXAoaywgbiwgcykgbmFba10gPSAwOwogICAgCiAgICBpbnQgY2sgPSAxOwogICAgcmVwKGssIDAsIG4pIHsKICAgICAgICBuYltrXSA9IChsbCljayAqIGlmY1trXSAlIFA7CiAgICAgICAgY2sgPSAobGwpY2sgKiBjICUgUDsKICAgIH0KICAgIHJlcChrLCBuLCBzKSBuYltrXSA9IDA7CiAgICAKICAgIG50dChuYSwgcywgMSk7CiAgICBudHQobmIsIHMsIDEpOwogICAgcmVwKGssIDAsIHMpIG5hW2tdID0gKGxsKW5hW2tdICogbmJba10gJSBQOwogICAgbnR0KG5hLCBzLCAtMSk7CiAgICAKICAgIGludCBnID0gX19idWlsdGluX2N0eihzKSwgdyA9IGl2MltnXTsKICAgIHJlcChrLCAwLCBuKSBhW2tdID0gKGxsKW5hW24gLSAxIC0ga10gKiB3ICUgUCAqIGlmY1trXSAlIFA7Cn0KCnZlY3RvcjxpbnQ+IG1sKHZlY3RvcjxpbnQ+IGEsIHZlY3RvcjxpbnQ+IGIpIHsKICAgIGludCBuID0geihhKSArIHooYikgLSAxLCBzID0gMTsKICAgIHdoaWxlIChzIDwgbikgcyA8PD0gMTsKICAgIAogICAgcmVwKGssIDAsIHooYSkpIG5hW2tdID0gYVtrXTsKICAgIHJlcChrLCB6KGEpLCBzKSBuYVtrXSA9IDA7CiAgICByZXAoaywgMCwgeihiKSkgbmJba10gPSBiW2tdOwogICAgcmVwKGssIHooYiksIHMpIG5iW2tdID0gMDsKICAgIAogICAgbnR0KG5hLCBzLCAxKTsKICAgIG50dChuYiwgcywgMSk7CiAgICByZXAoaywgMCwgcykgbmFba10gPSAobGwpbmFba10gKiBuYltrXSAlIFA7CiAgICBudHQobmEsIHMsIC0xKTsKICAgIAogICAgaW50IGcgPSBfX2J1aWx0aW5fY3R6KHMpLCB3ID0gaXYyW2ddOwogICAgdmVjdG9yPGludD4gcihuKTsKICAgIHJlcChrLCAwLCBuKSByW2tdID0gKGxsKW5hW2tdICogdyAlIFA7CiAgICAKICAgIHJldHVybiByOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgCiAgICBwcmUoKTsKICAgIGludCBuLCBxOwogICAgY2luID4+IG4gPj4gcTsKICAgIAogICAgdmVjdG9yPGludD4gYShuICsgMSk7CiAgICByZXAoaSwgMCwgbiArIDEpIGNpbiA+PiBhW2ldOwogICAgCiAgICBpbnQgbCA9IDAsIHMgPSAwLCBvID0gMDsKICAgIAogICAgYXV0byBmbCA9IFsmXSgpIHsKICAgICAgICBpZiAocykgewogICAgICAgICAgICBpZiAobykgewogICAgICAgICAgICAgICAgYS5lcmFzZShhLmJlZ2luKCksIGEuYmVnaW4oKSArIG1pbihvLCB6KGEpKSk7CiAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYS5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICBhLnB1c2hfYmFjaygwKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbnQgbSA9IHooYSk7CiAgICAgICAgICAgIHRzKGEuZGF0YSgpLCBtLCBzKTsKICAgICAgICAgICAgcyA9IDA7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgcmVwKGlpLCAwLCBxKSB7CiAgICAgICAgY2hhciBvcDsKICAgICAgICBjaW4gPj4gb3A7CiAgICAgICAgCiAgICAgICAgaWYgKG9wID09ICdEJykgewogICAgICAgICAgICBpZiAocykgewogICAgICAgICAgICAgICAgZmwoKTsKICAgICAgICAgICAgICAgIGlmICghYS5lbXB0eSgpKSBhLmVyYXNlKGEuYmVnaW4oKSk7CiAgICAgICAgICAgICAgICBpZiAoYS5lbXB0eSgpKSBhLnB1c2hfYmFjaygwKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG8rKzsKICAgICAgICAgICAgICAgIGlmIChvID49IHooYSkpIHsKICAgICAgICAgICAgICAgICAgICBhLmFzc2lnbigxLCAwKTsKICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAob3AgPT0gJ1MnKSB7CiAgICAgICAgICAgIGxsIGM7CiAgICAgICAgICAgIGNpbiA+PiBjOwogICAgICAgICAgICBjIF49IGw7CiAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICBhLmVyYXNlKGEuYmVnaW4oKSwgYS5iZWdpbigpICsgbWluKG8sIHooYSkpKTsKICAgICAgICAgICAgICAgIGlmIChhLmVtcHR5KCkpIGEucHVzaF9iYWNrKDApOwogICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcyA9IChpbnQpKChzICsgYyAlIFApICUgUCk7CiAgICAgICAgfSBlbHNlIGlmIChvcCA9PSAnTScpIHsKICAgICAgICAgICAgZmwoKTsKICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgIGEuZXJhc2UoYS5iZWdpbigpLCBhLmJlZ2luKCkgKyBtaW4obywgeihhKSkpOwogICAgICAgICAgICAgICAgbyA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGEuZW1wdHkoKSkgYS5wdXNoX2JhY2soMCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpbnQgbTsKICAgICAgICAgICAgY2luID4+IG07CiAgICAgICAgICAgIHZlY3RvcjxpbnQ+IGIobSk7CiAgICAgICAgICAgIHJlcChpLCAwLCBtKSBjaW4gPj4gYltpXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGEgPSBtbChhLCBiKTsKICAgICAgICAgICAgaWYgKHooYSkgPj0gTVgpIGEucmVzaXplKE1YKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsbCB0OwogICAgICAgICAgICBjaW4gPj4gdDsKICAgICAgICAgICAgdCBePSBsOwogICAgICAgICAgICAKICAgICAgICAgICAgaW50IGsgPSAoaW50KXQgKyBvLCB2ID0geihhKTsKICAgICAgICAgICAgbGwgZSA9IDA7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoayA8IHYpIHsKICAgICAgICAgICAgICAgIGlmICghcykgewogICAgICAgICAgICAgICAgICAgIGUgPSAobGwpZmNbKGludCl0ICUgTVhdICogYVtrXSAlIFA7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxsIGogPSAxOwogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICsgayA8IHY7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBlID0gKGUgKyAobGwpYVtpICsga10gKiBmY1tpICsga10gJSBQICogaWZjW2ldICUgUCAqIGopICUgUDsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IChsbClqICogcyAlIFA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUgPSBlICUgUCAqIChsbClmY1soaW50KXQgJSBNWF0gJSBQICogaWZjW2sgJSBNWF0gJSBQOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGwgPSAoaW50KWU7CiAgICAgICAgICAgIGNvdXQgPDwgZSA8PCAnXG4nOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cg==