#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,m,n) for(int i=(int)m ; i < (int) n ; i++ ) #define rep(i,n) REP(i,0,n) typedef long long ll; typedef pair pint; const int inf=1e9+7; const ll longinf=1LL<<60 ; const ll mod=998244353 ; int dx[4]={1,0,-1,0} , dy[4]={0,1,0,-1} ; typedef vector> poly; const long double pi=acos(-1); poly dft(poly f,int rev){ int n=f.size(); int j=0; REP(i,1,n-1){ for(int k=n/2;k>(j^=k);k>>=1); if(i zeta,ret,t,s; for(int i=1;i(t.real()*ret.real()-t.imag()*ret.imag(),t.imag()*ret.real()+t.real()*ret.imag()); f[j+k]=s+t; f[j+k+i]=s-t; ret*=zeta; } } } if(rev==-1)rep(i,n)f[i]/=n; return f; } poly fft(poly g,poly h){ poly f; int m=(int)g.size()+h.size()+1; int sz=1; while(sz>N>>Q; rep(i,N){ int x;cin>>x; poly b; b.resize(2); b[0]=1; b[1]=x-1; a=fft(a,b); } rep(i,Q){ int x;cin>>x; cout<<(int)(a[N-x].real()+0.5)%mod<