#include using namespace std; const int MOD = 998244353; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, Q; cin >> N >> Q; string S; cin >> S; vector> dp(N + 1); dp[0] = {1}; auto calc = [&](int i, const vector& prv) { int people = i + 1; vector nxt(i + 2); for (int k = 0; k <= i; ++k) { if (prv[k] == 0) continue; { int liar = k; int honest = people - liar; bool answer_yes = honest * 2 > people; if (answer_yes == (S[i] == 'Y')) { nxt[k] += prv[k]; if (nxt[k] >= MOD) nxt[k] -= MOD; } } { int liar = k + 1; bool correct_yes = liar * 2 > people; bool answer_yes = !correct_yes; if (answer_yes == (S[i] == 'Y')) { nxt[k + 1] += prv[k]; if (nxt[k + 1] >= MOD) nxt[k + 1] -= MOD; } } } return nxt; }; for (int i = 0; i < N; ++i) { dp[i + 1] = calc(i, dp[i]); } while (Q--) { int t, x; cin >> t >> x; if (t == 1) { int p = x - 1; S[p] = (S[p] == 'Y' ? 'N' : 'Y'); for (int i = p; i < N; ++i) { vector nxt = calc(i, dp[i]); if (nxt == dp[i + 1]) { break; } dp[i + 1] = move(nxt); } } else { int K = x; cout << dp[N][K] << '\n'; } } }