#include <bits/stdc++.h>

using namespace std;

#define f(i, n) for(int i=0;i<n;i++)
#define ll long long
#define MOD (ll)998244353
#define int ll
#define vi vector<int>

int add(int a, int b)
{
    return (a+b) % MOD;
}

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

int mpw(int a, int n)
{
    int res = 1;
    for (; n > 0; a=mul(a,a), n >>= 1)
        if (n & 1)
            res = mul(res, a);
    return res;
    // int res = 1;
    // f(i, n)
    //     res = mul(res, a);
    // return res;
}

int n, q;
vi a;

int gt(vi a)
{
    int res = 0;
    f(i, n)
        res = add(res, mpw(a[i], i+1));
    return res;
}

vi p1(vi a)
{
    vi b = vi(n);
    // f(i, n/2)
    //     swap(a[i], a[n - i - 1]);
    f(i, n)
        b[i] = a[n - i - 1];
    return b;
}

vi p2(vi a)
{
    vi b = vi(n);
    // f(i, n)
    //     a[i] = n - a[i] + 1;
    f(i, n)
        b[i] = n - a[i] + 1;
    return b;
}

vi p3(vi a)
{
    vi b = vi(n);
    f(i, n)
        b[a[i] - 1] = i+1;
    return b;
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> q;
    a = vi(n);
    f(i, n)
        cin >> a[i];
    vi b(q);
    f(i, q)
        cin >> b[i];

    vi vs(8);
    vs[0] = gt(a);
    vs[1] = gt(p1(a));
    vs[2] = gt(p2(a));
    vs[4] = gt(p3(a));

    vs[3] = gt(p2(p1(a)));
    vs[5] = gt(p3(p1(a)));
    vs[6] = gt(p3(p2(a)));
    vs[7] = gt(p3(p2(p1(a))));
    // vi re(n);
    int cur = 0;
    f(j, q)
    {
        int p = b[j];
        if (p == 1)
        {
            cur ^= 1;
            // a = p1(a);
        }
        else if (p == 2)
        {
            cur ^= 2;
            // a = p2(a);
            // f(i, n)
            //     a[i] = n - a[i] + 1;
        }
        else
        {
            cur ^= 4;
            // a = p3(a);
            // f(i, n)
            //     re[a[i] - 1] = i+1;
            // swap(re, a);
        }
        // int res = 0;
        // f(i, n)
        // {
        //     // int pw = 1;
        //     int pw = mpw();
        //     // f(j, i+1)
        //     //     pw = pw * a[i] % MOD;
        //     res += pw;
        //     res %= MOD;
        // }
        // cout << res << ' ';
        // cout << gt(a) << ' ';
        cout << vs[cur] << ' ';
    }

    cout << '\n';
    return 0;
}