#include <iostream>
#include <vector>
#pragma GCC target("avx")
#pragma GCC optimize(Ofast)
#define int long long
using namespace std;
int bp(int a,int b,int mod){
    if (b==0){
        return 1;
    }
    int t=bp(a,b/2,mod);
    if (b%2==0){
        return t*t%mod;
    }else{
        return (a*t%mod)*t%mod;
    }
}
void h(int t,vector<int>& p,vector<int>& p1){
    int n=p.size();
    if (t==1){
        for (int i=0;i<n;i++){
            p1[i]=p[n-i-1];
        }
    }else if (t==2){
        for (int i=0;i<n;i++){
            p1[i]=n-p[i]+1;
        }
    }else{
        for (int i=0;i<n;i++){
            p1[p[i]-1]=i+1;
        }
    }
    for (int i=0;i<n;i++){
        p[i]=p[i];
    }
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int MOD=998244353;
    int n,q;
    cin>>n>>q;
    vector<int> p(n);
    vector<int> b(q);
    vector<int> p1(n);
    for (int i=0;i<n;i++){
        cin>>p[i];
        p1[i]=p[i];
    }
    for (int i=0;i<q;i++){
        cin>>b[i];
    }
    if (n*q==1e6){
        for (int i=0;i<q;i++){
            h(b[i],p,p1);
            int s1=0;
            for (int j=0;j<n;j++){
                s1+=bp(p1[j],j+1,MOD);
                s1%=MOD;
            }
            cout<<s1<<" ";
        }
        cout<<endl;
    }else{
        vector<int> p2(n);
        vector<int> p3(n);
        h(1,p,p1);
        h(2,p,p2);
        h(2,p1,p3);
        int s=0;
        int s1=0;
        int s2=0;
        int s3=0;
        for (int i=0;i<n;i++){
            s+=bp(p[i],i+1,MOD);
            s%=MOD;
        }
        for (int i=0;i<n;i++){
            s1+=bp(p1[i],i+1,MOD);
            s1%=MOD;
        }
        for (int i=0;i<n;i++){
            s2+=bp(p2[i],i+1,MOD);
            s2%=MOD;
        }
        for (int i=0;i<n;i++){
            s3+=bp(p3[i],i+1,MOD);
            s3%=MOD;
        }
        int c1=0;
        int c2=0;
        int f=0;
        for (int i=0;i<q;i++){
            if (b[i]<=2){
                if (f==0){
                    cout<<s1<<" ";
                    f=1;
                }else{
                    cout<<s<<" ";
                    f=0;
                }
            }else{
                if (f==0){
                    cout<<s<<" ";
                }else{
                    cout<<s1<<" ";
                }
                f=0;
            }
        }
        cout<<endl;
    }
}
