#include <bits/stdc++.h>
using namespace std;
template <class T, class T2>
inline void chkmax(T &x, const T2 &y) {
  if (x < y) x = y;
}
template <class T, class T2>
inline void chkmin(T &x, const T2 &y) {
  if (x > y) x = y;
}
const int MAXN = (1 << 20);
int64_t mod;
void fft(vector<int64_t> &a, int low, int high) {
  if (low == high - 1) return;
  int len = (high - low) / 2, mid = low + len;
  fft(a, low, mid);
  fft(a, mid, high);
  for (int i = low; i < mid; i++) {
    int64_t x1 = a[i];
    int64_t x2 = a[i + len];
    a[i] = (mod + x1 - x2);
    a[i + len] = (x1 + x2);
    if (a[i] >= mod) a[i] -= mod;
    if (a[i + len] >= mod) a[i + len] -= mod;
  }
}
void inv_fft(vector<int64_t> &a, int low, int high) {
  if (low == high - 1) return;
  int len = (high - low) / 2, mid = low + len;
  for (int i = low; i < mid; i++) {
    int64_t y1 = a[i];
    int64_t y2 = a[i + len];
    a[i] = (y1 + y2);
    a[i + len] = (y2 - y1 + mod);
    if (a[i] >= mod) a[i] -= mod;
    if (a[i + len] >= mod) a[i + len] -= mod;
  }
  inv_fft(a, low, mid);
  inv_fft(a, mid, high);
}
int n;
int64_t a[MAXN];
int64_t b[MAXN];
int64_t mult_mod(int64_t a, int64_t b) {
  return (a * b - (int64_t)(((long double)a * b + 0.5) / mod) * mod);
}
int64_t t;
void read() {
  cin >> n >> t >> mod;
  mod *= (1ll << n);
  for (int i = 0; i < (1 << n); i++) cin >> a[i];
  for (int j = 0; j <= n; j++) cin >> b[j];
}
void solve() {
  vector<int64_t> A(1 << n), B(1 << n);
  for (int i = 0; i < (1 << n); i++) {
    A[i] = a[i], B[i] = b[__builtin_popcount(i)];
    A[i] %= mod;
    B[i] %= mod;
  }
  fft(B, 0, (1 << n));
  fft(A, 0, (1 << n));
  for (int i = 0; i < (1 << n); i++) {
    int64_t ret = 1, p = t;
    while (p) {
      if (p & 1ll) ret = mult_mod(ret, B[i]);
      B[i] = mult_mod(B[i], B[i]);
      p >>= 1ll;
    }
    B[i] = ret;
  }
  for (int i = 0; i < (1 << n); i++) A[i] = mult_mod(A[i], B[i]);
  inv_fft(A, 0, (1 << n));
  for (int i = 0; i < (1 << n); i++) cout << (A[i] / (1ll << n)) << '\n';
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  read();
  solve();
  return 0;
}
