#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
const long long InvG = 332748118;
const long long G = 3;
const long long MAXN = 300000;
long long ksm(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = (1LL * ans * a) % MOD;
    a = (1LL * a * a) % MOD;
    b >>= 1;
  }
  return ans;
}
long long rev[MAXN];
void cal_rev(long long n, long long lim) {
  for (long long i = 0; i < n; i++)
    rev[i] = ((rev[(i >> 1)] >> 1) | ((i & 1) << (lim - 1)));
}
long long fac[MAXN], fac_inv[MAXN];
void init(long long n) {
  fac[0] = 1;
  for (long long i = 1; i <= n; i++) fac[i] = (1LL * fac[i - 1] * i) % MOD;
  fac_inv[n] = ksm(fac[n], MOD - 2);
  for (long long i = n - 1; i >= 0; i--)
    fac_inv[i] = (fac_inv[i + 1] * (i + 1)) % MOD;
}
void NTT(long long *a, long long n, long long opt) {
  for (long long i = 0; i < n; i++)
    if (rev[i] < i) swap(a[rev[i]], a[i]);
  for (long long i = 2; i <= n; i <<= 1) {
    long long len = i / 2;
    long long tmp = ksm((opt) ? G : InvG, (MOD - 1) / i);
    for (long long j = 0; j < n; j += i) {
      long long arr = 1;
      for (long long k = j; k < j + len; k++) {
        long long t = (1LL * arr * a[k + len]) % MOD;
        a[k + len] = (a[k] - t + MOD) % MOD;
        a[k] = (a[k] + t) % MOD;
        arr = (1LL * arr * tmp) % MOD;
      }
    }
  }
  if (!opt) {
    long long invn = ksm(n, MOD - 2);
    for (long long i = 0; i < n; i++) a[i] = (1LL * a[i] * invn) % MOD;
  }
}
long long n, m, f[MAXN], g[MAXN];
signed main() {
  scanf("%lld %lld", &n, &m);
  init(MAXN - 5);
  for (long long i = 0; i <= n; i++) scanf("%lld", &f[i]);
  for (long long i = 0; i <= n; i++) {
    f[i] = (1LL * f[i] * fac[i]) % MOD;
    g[i] = fac_inv[i];
  }
  reverse(f, f + n + 1);
  long long lim = 0;
  while ((1 << lim) < 2 * (n + 1)) lim++;
  long long len = (1 << lim);
  cal_rev(len, lim);
  NTT(f, len, 1);
  NTT(g, len, 1);
  for (long long i = 0; i < len; i++) g[i] = (1LL * f[i] * g[i]) % MOD;
  NTT(g, len, 0);
  for (long long i = 0; i <= len; i++) f[i] = 0;
  for (long long i = n + 1; i <= len; i++) g[i] = 0;
  for (long long i = 0; i <= n; i++)
    g[n - i] = (1LL * g[n - i] * ksm(ksm(i + 1, m), MOD - 2)) % MOD;
  for (long long i = 0; i <= n; i++) {
    f[i] = 1LL * ((i & 1) ? MOD - 1 : 1) * fac_inv[i] % MOD;
  }
  NTT(f, len, 1);
  NTT(g, len, 1);
  for (long long i = 0; i < len; i++) f[i] = (1LL * f[i] * g[i]) % MOD;
  NTT(f, len, 0);
  for (long long i = 0; i <= n; i++)
    printf("%lld ", (1LL * f[n - i] * fac_inv[i]) % MOD);
  return 0;
}
