/*
 * Copyright (C) 2012, 2013, 2016  Hiroyasu Kamo
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

/*
 * ACM-ICPC 2012 Asia Regional Contest, Tokyo
 *  Problem C  One-Dimensional Cellular Automaton
 *
 *	Author: Hiroyasu Kamo <wd@ics.nara-wu.ac.jp>
 */

#include <cstdlib>
#include <vector>
#include <iostream>
using std::size_t;
using std::vector;
using std::cin;
using std::cout;

vector<vector<unsigned> >
matmult(unsigned m, size_t L, size_t M, size_t N,
	const vector<vector<unsigned> > &B,
	const vector<vector<unsigned> > &C)
{
	vector<vector<unsigned> >	A;
	A.reserve(L);
	for (size_t i = 0; i < L; i ++) {
		vector<unsigned>	row;
		row.reserve(N);
		for (size_t k = 0; k < N; k ++) {
			unsigned	s = 0;
			for (size_t j = 0; j < M; j ++) {
				s += B[i][j] * C[j][k];
			}
			row.push_back(s % m);
		}
		A.push_back(std::move(row));
	}
	return std::move(A);
}

vector<vector<unsigned> >
matnull(size_t L, size_t M)
{
	vector<unsigned>	row(M, 0);
	vector<vector<unsigned> >	A(L, row);
	return std::move(A);
}

vector<vector<unsigned> >
run_automaton(
	size_t n, unsigned m, unsigned a, unsigned b, unsigned c, unsigned t,
	const vector<vector<unsigned> > &s)
{
	vector<vector<unsigned> >	p = matnull(n, n);
	for (size_t i = 0; i < n; i ++) {
		p[i][i] = b;
	}
	for (size_t i = 1; i < n; i ++) {
		p[i][i - 1] = a;
		p[i - 1][i] = c;
	}
	vector<vector<unsigned> >	q = matnull(n, n);
	for (size_t i = 0; i < n; i ++) {
		q[i][i] = 1;
	}
	for (; t > 0; t /= 2) {
		if (t % 2 != 0) {
			q = matmult(m, n, n, n, p, q);
		}
		p = matmult(m, n, n, n, p, p);
	}
	return std::move(matmult(m, n, n, 1, q, s));
}

int
main()
{
	size_t	n;
	unsigned	m, a, b, c, t;
	while (cin >> n >> m >> a >> b >> c >> t &&
	       !(n == 0 && m == 0 && a == 0 && b == 0 && c == 0 && t == 0)) {
		vector<vector<unsigned> >	s;
		s.reserve(n);
		for (size_t i = 0; i < n; i ++) {
			unsigned	x;
			cin >> x;
			s.push_back({x});
		}
		const vector<vector<unsigned> >	g = run_automaton(n, m, a, b, c, t, s);
		for (size_t i = 0; cout << g[i][0], ++ i < n; ) {
			cout << " ";
		}
		cout << "\n";
	}
	return 0;
}
