#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 7, p = 998244353;
int n, k, lim, a[N], b[N], c[N], rev[N], w[N], fac[N], ifac[N];
inline long long pows(long long a, int b) {
  long long ans = 1;
  while (b > 0) {
    if (b & 1) ans = (ans * a) % p;
    a = (a * a) % p, b = b >> 1;
  }
  return ans;
}
inline void ntt(int *s, int x) {
  for (int i = 0; i < lim; i++)
    if (rev[i] < i) swap(s[i], s[rev[i]]);
  for (int mid = 1; mid < lim; mid = mid << 1) {
    long long w = pows(x, (p - 1) / (mid << 1));
    for (int i = 0, r = mid << 1; i < lim; i += r) {
      long long wn = 1;
      for (int j = 0; j < mid; j++, wn = (wn * w) % p) {
        int a = s[i + j], b = (s[i + j + mid] * wn) % p;
        s[i + j] = (a + b) % p, s[i + j + mid] = (a - b + p) % p;
      }
    }
  }
}
inline int mul(int a, int b) { return 1ll * a * b % p; }
int main() {
  cin >> n;
  long long m;
  cin >> m;
  m %= (p - 1);
  for (int i = 0; i <= n; i++) scanf("%d", &w[i]);
  fac[0] = ifac[0] = 1;
  for (int i = 1; i <= n; i++)
    fac[i] = 1ll * i * fac[i - 1] % p, ifac[i] = pows(fac[i], p - 2);
  lim = 1, k = 0;
  while (lim <= n + n) lim = lim << 1, k++;
  for (int i = 0; i < lim; i++)
    rev[i] = (rev[i >> 1] >> 1) | (i & 1) << (k - 1);
  for (int i = 0; i <= n; i++) a[i] = mul(w[i], fac[i]);
  for (int i = 0; i <= n; i++) b[n - i] = ifac[i];
  ntt(a, 3), ntt(b, 3);
  for (int i = 0; i < lim; i++) a[i] = 1ll * a[i] * b[i] % p;
  ntt(a, (p + 1) / 3);
  long long inv = pows(lim, p - 2);
  for (int i = 0; i < lim; i++) a[i] = a[i] * inv % p;
  for (int i = 0; i <= n; i++)
    c[i] = mul(a[i + n] * pows(pows(i + 1, p - 2), m) % p, ifac[i]);
  for (int i = 0; i < lim; i++) a[i] = b[i] = 0;
  for (int i = 0; i <= n; i++) a[i] = mul(c[i], fac[i]);
  for (int i = 0; i <= n; i++) b[n - i] = mul(ifac[i], pows(p - 1, i));
  ntt(a, 3), ntt(b, 3);
  for (int i = 0; i < lim; i++) a[i] = 1ll * a[i] * b[i] % p;
  ntt(a, (p + 1) / 3);
  for (int i = 0; i < lim; i++) a[i] = a[i] * inv % p;
  for (int i = 0; i <= n; i++) c[i] = mul(a[i + n], ifac[i]);
  for (int i = 0; i <= n; i++) printf("%d ", c[i]);
  return 0;
}
