#include <bits/stdc++.h>

using namespace std;

#define sll __int128_t
#define ll long long
#define ld long double
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define size(x) (int)(x).size()

const int MOD = 998244353, MAXN = 5e5 + 100, inf = 1e9;

int add(int a, int b) {
    if (a + b >= MOD) {
        return a + b - MOD;
    }
    return a + b;
}

int sub(int a, int b) {
    if (a - b < 0) {
        return a - b + MOD;
    }
    return a - b;
}

int mult(int a, int b) {
    return ((ll)a * b) % MOD;
}

int kv(int a) {
    return ((ll)a * a) % MOD;
}

int fast_pow(int x, int a) {
    if (a == 0) return 1;
    if (a == 1) return x;
    if (a & 1) return mult(x, fast_pow(x, a - 1));
    return kv(fast_pow(x, a / 2));
}

int get(vector<int> &a, int n) {
    int ans = 0;
    for (int i = 0; i < n; i++) {
        ans = add(ans, fast_pow(a[i], i + 1));
    }
    return ans;
}

void solve() {
    int n, q;
    cin >> n >> q;
    vector<int> a(n), b(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    int ans1 = get(a, n);
    reverse(all(a));
    int ans2 = get(a, n);
    reverse(all(a));
    int t1 = 0;
    for (int i = 0; i < q; i++) {
        int t; cin >> t;
        // if (t == 1) {
        //     reverse(all(a));
        // }
        // else if (t == 2) {
        //     for (auto &x : a) {
        //         x = n - x + 1;
        //     }
        // }
        // else {
        //     for (int j = 0; j < n; j++) {
        //         b[a[j] - 1] = j + 1;
        //     }
        //     a = b;
        // }
        if (t == 1 || t == 2) t1 = 1 - t1;
        //else t1 = 0;
        // for (auto &x : a) {
        //     cout << x << " ";
        // }
        // cout << endl;
        if (t1 == 0) cout << ans1 << " ";
        else cout << ans2 << " ";

        // cout << get(a, n) << endl;
    }
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
#ifdef LOCAL
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    int ttt = 1;
    //cin >> ttt;
    while (ttt--) {
        solve();
    }
}