#include<cstdio>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;

int M;

const int N_MAX=50;

template<class T>
void mul(int n,const T A[N_MAX][N_MAX],const T x[N_MAX],T y[N_MAX]){
	static T z[N_MAX];
	rep(i,n){
		z[i]=0;
		rep(j,n) z[i]=(z[i]+A[i][j]*x[j])%M;
	}
	rep(i,n) y[i]=z[i];
}

template<class T>
void mul(int n,const T A[N_MAX][N_MAX],const T B[N_MAX][N_MAX],T C[N_MAX][N_MAX]){
	static T tmp[N_MAX][N_MAX];
	rep(i,n) rep(j,n) {
		tmp[i][j]=0;
		rep(k,n) tmp[i][j]=(tmp[i][j]+A[i][k]*B[k][j])%M;
	}
	rep(i,n) rep(j,n) C[i][j]=tmp[i][j];
}

template<class T>
void pow(int n,const T A[N_MAX][N_MAX],int m,T B[N_MAX][N_MAX]){
	static T tmp[N_MAX][N_MAX];
	rep(i,n) rep(j,n) {
		tmp[i][j]=A[i][j];
		B[i][j]=(i==j?1:0);
	}
	for(int t=0;m>0;t++){
		if(m&(1LL<<t)){
			mul(n,B,tmp,B);
			m-=1LL<<t;
		}
		mul(n,tmp,tmp,tmp);
	}
}

int main(){
	for(int n,a,b,c,t;scanf("%d%d%d%d%d%d",&n,&M,&a,&b,&c,&t),n;){
		int x[N_MAX];
		rep(i,n) scanf("%d",x+i);

		int A[N_MAX][N_MAX]={};
		rep(i,n){
			if(i> 0 ) A[i][i-1]=a;
			A[i][i]=b;
			if(i<n-1) A[i][i+1]=c;
		}

		pow(n,A,t,A);
		mul(n,A,x,x);

		rep(i,n) printf("%d%c",x[i],i+1<n?' ':'\n');
	}

	return 0;
}