#include <bits/stdc++.h>
using namespace std;
long long n, m, k, p;
long long mod;
long long a[1201000], b[1201000], c[1201000];
void fwt(long long* a) {
  for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
      if (!(j >> i & 1)) {
        long long x = a[j], y = a[j | 1 << i];
        a[j] = (x + y) % mod;
        a[j | 1 << i] = (x - y + mod) % mod;
      }
}
long long mul(long long x, long long y) {
  long long tmp = x * y - (long long)((long double)x / mod * y + 0.5) * mod;
  return tmp < 0 ? tmp + mod : tmp;
}
long long power(long long x, long long y) {
  long long ret = 1;
  for (; y; y >>= 1, x = mul(x, x))
    if (y & 1) ret = mul(ret, x);
  return ret;
}
int main() {
  scanf("%lld%lld%lld", &m, &k, &p);
  n = 1 << m;
  mod = n * p;
  for (int i = 0; i < n; i++) scanf("%lld", &a[i]), a[i] %= mod;
  fwt(a);
  for (int i = 0; i <= m; i++) scanf("%lld", &b[i]), b[i] %= mod;
  for (int i = 0; i < n; i++) c[i] = b[__builtin_popcount(i)];
  fwt(c);
  for (int i = 0; i < n; i++) c[i] = mul(power(c[i] % mod, k), a[i]);
  fwt(c);
  for (int i = 0; i < n; i++) printf("%lld\n", c[i] / n);
  return 0;
}
