#include <bits/stdc++.h>
using namespace std;
const int N = (1 << 18) + 7, P = 998244353;
int qpow(int x, int y) {
  int tms = 1;
  while (y) {
    if (y & 1) tms = 1ll * tms * x % P;
    x = 1ll * x * x % P, y >>= 1;
  }
  return tms;
}
int w[N], rev[N], fac[N], inv[N], lim;
void NTT_init(int len) {
  int L = 0;
  lim = 1;
  for (; lim < len; lim <<= 1, ++L)
    ;
  for (int i = 0; i < lim; ++i)
    rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << L - 1);
  w[0] = 1, w[1] = qpow(3, (P - 1) / lim);
  for (int i = 2; i < lim; ++i) w[i] = 1ll * w[i - 1] * w[1] % P;
}
void NTT(int *p, int o) {
  for (int i = 0; i < lim; ++i)
    if (i < rev[i]) swap(p[i], p[rev[i]]);
  for (int i = 1, t = lim / 2; i < lim; i <<= 1, t >>= 1)
    for (int j = 0; j < lim; j += (i << 1))
      for (int k = 0, o = 0; k < i; ++k, o += t) {
        int x = p[j + k], y = 1ll * w[o] * p[i + j + k] % P;
        p[j + k] = (x + y) % P, p[i + j + k] = (x + P - y) % P;
      }
  if (o == 1) return;
  int iv = qpow(lim, P - 2);
  reverse(p + 1, p + lim);
  for (int i = 0; i < lim; ++i) p[i] = 1ll * p[i] * iv % P;
}
int n, p[N], A[N], B[N], C[N], D[N];
long long m;
int main() {
  cin >> n >> m;
  m %= (P - 1);
  fac[0] = 1;
  for (int i = 1; i <= n; ++i) fac[i] = 1ll * fac[i - 1] * i % P;
  inv[n] = qpow(fac[n], P - 2);
  for (int i = n - 1; ~i; --i) inv[i] = 1ll * inv[i + 1] * (i + 1) % P;
  for (int i = 0; i <= n; ++i) cin >> p[i];
  for (int i = 0; i <= n; ++i)
    A[n - i] = 1ll * fac[i] * p[i] % P, B[i] = inv[i];
  NTT_init(n + n + 1), NTT(A, 1), NTT(B, 1);
  for (int i = 0; i < lim; ++i) A[i] = 1ll * A[i] * B[i] % P;
  NTT(A, -1);
  for (int i = 0; i <= n; ++i)
    C[n - i] = 1ll * A[n - i] * qpow(i + 1, P - 1 - m) % P,
          D[i] = (i & 1) ? P - inv[i] : inv[i];
  NTT(C, 1), NTT(D, 1);
  for (int i = 0; i < lim; ++i) C[i] = 1ll * C[i] * D[i] % P;
  NTT(C, -1);
  for (int i = 0; i <= n; ++i) printf("%lld ", 1ll * C[n - i] * inv[i] % P);
  return 0;
}
