#include <stdio.h>
#include <memory.h>
#include <vector>

using namespace std;

typedef vector<long long> Array;
typedef vector<Array> Matrix;

//FILE *in = freopen("input.txt", "r", stdin);
//FILE *out = freopen("output.txt", "w", stdout);

int N, M, A, B, C, T;
long long S[100];
long long res[100];

Matrix mat;

void input() {
	memset(S, 0, sizeof(S));
	memset(res, 0, sizeof(res));
	mat.clear();
	for(int i = 0; i < N; i++) {
		scanf("%d", &S[i]);
		mat.push_back(Array(N));
		mat[i][i] = 1;
	}
}

Matrix mul(const Matrix &a, const Matrix &b) {
	Matrix res(a.size(), Array(b[0].size()));
	for(int i = 0; i < a.size(); i++) {
		for(int j = 0; j < b[0].size(); j++) {
			for(int k = 0; k < a[0].size(); k++) {
				res[i][j] = (res[i][j] + a[i][k]*b[k][j])%M;
			}
		}
	}
	return res;
}

Matrix matmul(int n) {
	if(n == 1)
		return mat;
	Matrix res = matmul(n/2);
	res = mul(res, res);
	if(n&1)
		res = mul(res, mat);
	return res;
}

void process() {
	for(int i = 0; i < N; i++) {
		if(i-1 >= 0) 
			mat[i][i-1] = A;
		mat[i][i] = B;
		if(i+1 < N)
			mat[i][i+1] = C;
	}

	mat = matmul(T);
}

void output() {
	for(int i = 0; i < N; i++) {
		for(int j = 0; j < N; j++) {
			res[i] = (res[i] + mat[i][j]*S[j])%M;
		}
	}

	for(int i = 0; i < N - 1; i++) {
		printf("%Ld ", res[i]);
	}
	printf("%Ld\n", res[N-1]);
}

int main() {
	while(true){
		scanf("%d%d%d%d%d%d", &N, &M, &A, &B, &C, &T);
		if(N == 0) break;
		input();
		if(T)
			process();
		output();
	}
	return 0;
}