const int MAXN=505,mod=998244353;
int n,dp[2][MAXN],x[MAXN],ans[MAXN],a,b,c,pos;
int quick_pow(int a,LL b){
int ans=1;
while(b){
if(b&1)ans=1LL*ans*a%mod;
a=1LL*a*a%mod;
b>>=1;
}
return ans;
}
void Mul(){
pos=!pos;
mem(dp[pos],0);
_for(i,0,n){
_for(j,0,n)
dp[pos][(i+j)%n]=(dp[pos][(i+j)%n]+1LL*dp[!pos][i]*dp[!pos][j])%mod;
}
}
void Add(){
pos=!pos;
_for(i,0,n){
dp[pos][i]=0;
dp[pos][i]=(dp[pos][i]+1LL*a*dp[!pos][(i+n-1)%n])%mod;
dp[pos][i]=(dp[pos][i]+1LL*b*dp[!pos][(i+1)%n])%mod;
dp[pos][i]=(dp[pos][i]+1LL*c*dp[!pos][i%n])%mod;
}
}
int main()
{
n=read_int();
LL k=read_LL(),Bit=0;
a=read_int(),b=read_int(),c=read_int();
_for(i,0,n)x[i]=read_int();
while(k>=(1LL<<Bit))Bit++;
Bit--;
dp[0][0]=1;
while(~Bit){
if((k>>Bit)&1)
Add();
if(Bit)
Mul();
Bit--;
}
_for(i,0,n){
_for(j,0,n)
ans[(i+j)%n]=(ans[(i+j)%n]+1LL*x[i]*dp[pos][j])%mod;
}
int inv=quick_pow(quick_pow(a+b+c,mod-2),k);
_for(i,0,n)space(1LL*ans[i]*inv%mod);
return 0;
}