#include <bits/stdc++.h>
using namespace std;
const long long N = 4e5 + 100, mod = 998244353;
long long n, m, len = 1, l, r[N], g[N], f[N], fac[N], ifac[N];
long long qpow(long long x, long long y) {
  long long res(1);
  while (y) {
    if (y & 1) res = 1ll * res * x % mod;
    x = 1ll * x * x % mod, y >>= 1;
  }
  return res;
}
void NTT(long long *f, long long len, long long type) {
  for (long long i = 0; i < len; i++)
    if (i < r[i]) swap(f[i], f[r[i]]);
  for (long long mid = 2; mid <= len; mid <<= 1) {
    long long gn = qpow(3, (mod - 1) / mid);
    for (long long i = 0; i < len; i += mid) {
      long long g(1);
      for (long long j = i; j < i + mid / 2; j++, g = 1ll * g * gn % mod) {
        long long u = f[j], t = 1ll * g * f[j + mid / 2] % mod;
        f[j] = (u + t) % mod, f[j + mid / 2] = (u - t + mod) % mod;
      }
    }
  }
  if (type == -1) {
    reverse(f + 1, f + len);
    long long inv = qpow(len, mod - 2);
    for (long long i = 0; i <= len; i++) f[i] = 1ll * f[i] * inv % mod;
  }
}
signed main() {
  scanf("%lld%lld", &n, &m);
  m %= (mod - 1);
  while (len <= (n + 1) * 2) len <<= 1, l++;
  for (long long i = 0; i < len; i++)
    r[i] = (r[i >> 1] >> 1) | ((i & 1) << (l - 1));
  fac[0] = fac[1] = ifac[0] = ifac[1] = 1;
  for (long long i = 2; i <= n; i++)
    ifac[i] = (mod - mod / i) * ifac[mod % i] % mod;
  for (long long i = 2; i <= n; i++) {
    fac[i] = i * fac[i - 1] % mod;
    (ifac[i] *= ifac[i - 1]) %= mod;
  }
  for (long long i = 0; i <= n; i++) {
    scanf("%lld", &f[n - i]);
    (f[n - i] *= fac[i]) %= mod;
    g[i] = ifac[i];
  }
  NTT(f, len, 1);
  NTT(g, len, 1);
  for (long long i = 0; i < len; i++) g[i] = g[i] * f[i] % mod;
  NTT(g, len, -1);
  for (long long i = 0; i <= n; i++)
    (g[n - i] *= qpow(qpow(i + 1, m), mod - 2)) %= mod;
  for (long long i = n + 1; i < len; i++) g[i] = 0;
  memset(f, 0, sizeof(f));
  for (long long i = 0; i <= n; i++)
    f[i] = i & 1 ? (mod - ifac[i]) % mod : ifac[i];
  NTT(f, len, 1);
  NTT(g, len, 1);
  for (long long i = 0; i < len; i++) (f[i] *= g[i]) %= mod;
  NTT(f, len, -1);
  for (long long i = 0; i <= n; i++) {
    printf("%lld ", (f[n - i] * ifac[i] % mod + mod) % mod);
  }
  return 0;
}
