#include<bits/stdc++.h>
using namespace std;

const long long MOD=998244353;
long long n;
long long a[100'005];
long long que[100'005];

long long faststep(long long x, long long p)
{
    if (p==1) return x;
    if (p==0) return 1;

    long long sum=faststep(x, p/2);
    sum=(sum*sum)%MOD;
    if (p%2==1) sum=(sum*x)%MOD;

    return sum;
}


long long calc()
{
    long long sum=0;
    for (long long i=1; i<=n; i++)
    {
        sum=(sum+faststep(a[i], i))%MOD;
    }
    return sum;
}

int main ()
{
    cin>>n;
    long long q;
    cin>>q;


    for (long long i=1; i<=n; i++) cin>>a[i];
    for (long long i=1; i<=q; i++) cin>>que[i];

    long long modes[2]={};

    if (que[0]==1 || que[0]==2)
    {
        modes[0]=calc();
        reverse(a+1, a+n+1);
        modes[1]=calc();
    }
    else
    {
        modes[0]=calc();
        long long q[n+10]={};
        for (long long i=1; i<=n; i++)
        {
            q[a[i]]=i;
        }
        for (long long i=1; i<=n; i++)
        {
            a[i]=q[i];
        }
        modes[1]=calc();
    }

    for (long long i=0; i<q; i++)
    {
        cout<<modes[i%2]<<" ";
    }


    return 0;
}

