#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve();

signed main() {
#ifdef openol
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
#else
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
#endif
    int t=1;
    //cin>>t;
    while (t--) solve();
}

vector<int> rev(vector<int> &a) {
    int n=a.size()-1;
    vector<int> ans(n+1);
    for (int i=1;i<=n;i++) ans[n+1-i]=a[i];
    return ans;
}
vector<int> flip(vector<int> &a) {
    int n=a.size()-1;
    vector<int> ans(n+1);
    for (int i=1;i<=n;i++) ans[i]=n+1-a[i];
    return ans;
}

vector<int> f(vector<int> &a) {
    int n=a.size()-1;
    vector<int> ans(n+1);
    for (int i=1;i<=n;i++) ans[a[i]]=i;
    return ans;
}

int mod = 998244353;

int bp(int a,int x) {
    if (x==0) return 1;
    if (x%2==0) {
        int res=bp(a,x/2);
        return (res*res)%mod;
    }
    int res=bp(a,x/2);
    res*=res;
    res%=mod;
    res*=a;
    return res%mod;
}

int cost(vector<int> a) {
    int ans=0;
    int n=a.size()-1;
    for (int i=1;i<=n;i++) ans+=bp(a[i],i);
    ans%=mod;
    return ans;
}

void solve(){
    int n,q;
    cin>>n>>q;
    vector<int> a(n+1);
    for (int i=1;i<=n;i++) cin>>a[i];
    map<vector<int>,int> mp;

    for (int i=0;i<2;i++) {
        for (int j=0;j<2;j++) {
            for (int k=0;k<2;k++) {
                for (int l=0;l<2;l++) {
                    for (int z=0;z<2;z++) {
                        for (int x=0;x<2;x++) {
                            int c=0;
                            vector<int> v=a;
                            if (i) {
                                if (c%2==0) {
                                    v=flip(v);
                                }
                                else {
                                    v=flip(v);
                                    v=flip(v);
                                    v=flip(v);
                                }
                                c++;
                            }
                            if (j) {
                                if (c%2==1) {
                                    v=flip(v);
                                }
                                else {
                                    v=flip(v);
                                    v=flip(v);
                                    v=flip(v);
                                }
                                c++;
                            }

                            if (k) {
                                if (c%2==0) {
                                    v=rev(v);
                                }
                                else {
                                    v=flip(v);
                                    v=rev(v);
                                    v=flip(v);
                                }
                                c++;
                            }
                            if (l) {
                                if (c%2==1) {
                                    v=rev(v);
                                }
                                else {
                                    v=flip(v);
                                    v=rev(v);
                                    v=flip(v);
                                }
                                c++;
                            }

                            if (z) {
                                if (c%2==0) {
                                    v=f(v);
                                }
                                else {
                                    v=flip(v);
                                    v=f(v);
                                    v=flip(v);
                                }
                                //c++;
                            }
                            if (x) {
                                if (c%2==1) {
                                    v=f(v);
                                }
                                else {
                                    v=flip(v);
                                    v=f(v);
                                    v=flip(v);
                                }
                                //c++;
                            }
                            mp[{i,j,k,l,z,x}]=cost(v);
                        }
                    }
                }
            }
        }
    }
    //vector<int> qwq={0,5,3,1,4,2};
    //qwq=flip(qwq);
    //for (auto i:qwq) cout<<i<<' ';
    vector<int> cur={0,0,0,0,0,0};
    int c=0;
    while (q--) {
        int b;
        cin>>b;

        if (b==2) {
            if (c%2==0) cur[0]++;
            else cur[1]++;
        }
        if (b==1) {
            if (c%2==0) cur[2]++;
            else cur[3]++;
        }
        if (b==3) {
            if (c%2==0) cur[4]++;
            else cur[5]++;
        }
        for (int i=0;i<6;i++) cur[i]%=2;
        cout<<mp[cur]<<"\n";
    }
}