#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10, M = (1 << 18) + 10, mod = 998244353;
long long rd() {
  long long x = 0, w = 1;
  char ch = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + (ch ^ 48);
    ch = getchar();
  }
  return x * w;
}
int fpow(int a, long long b) {
  int an = 1;
  while (b) {
    if (b & 1) an = 1ll * an * a % mod;
    a = 1ll * a * a % mod, b >>= 1;
  }
  return an;
}
int ginv(int a) { return fpow(a, mod - 2); }
int rdr[M], l2[M], W[19], iW[19];
void ntt(int *a, int n, bool op) {
  int l = l2[n], x, y;
  for (int i = 0; i < n; ++i) {
    rdr[i] = (rdr[i >> 1] >> 1) | ((i & 1) << (l - 1));
    if (i < rdr[i]) swap(a[i], a[rdr[i]]);
  }
  for (int i = 1, p = 0; i < n; i <<= 1, ++p) {
    int ww = op ? W[p] : iW[p];
    for (int j = 0; j < n; j += i << 1)
      for (int k = 0, w = 1; k < i; ++k, w = 1ll * w * ww % mod)
        x = a[j + k], y = 1ll * a[j + k + i] * w % mod,
        a[j + k] = (x + y) % mod, a[j + k + i] = (x - y + mod) % mod;
  }
  if (!op)
    for (int i = 0, w = ginv(n); i < n; ++i) a[i] = 1ll * a[i] * w % mod;
}
int n, aa[M], bb[M], fac[N], iac[N];
long long m;
int main() {
  for (int i = 1, p = 0; p < 19; i <<= 1, ++p)
    W[p] = fpow(3, (mod - 1) / (i << 1)), iW[p] = ginv(W[p]), l2[i] = p;
  n = rd(), m = rd();
  for (int i = 0; i <= n; ++i) aa[i] = rd();
  fac[0] = 1;
  for (int i = 1; i <= n; ++i) fac[i] = 1ll * fac[i - 1] * i % mod;
  iac[n] = ginv(fac[n]);
  for (int i = n; i; --i) iac[i - 1] = 1ll * iac[i] * i % mod;
  int len = 1;
  while (len <= n + n) len <<= 1;
  for (int i = 0; i <= n; ++i) aa[i] = 1ll * aa[i] * fac[i] % mod;
  for (int i = 0; i <= n; ++i) bb[i] = iac[n - i];
  ntt(aa, len, 1), ntt(bb, len, 1);
  for (int i = 0; i < len; ++i) bb[i] = 1ll * aa[i] * bb[i] % mod;
  memset(aa, 0, sizeof(int) * len), ntt(bb, len, 0);
  for (int i = 0; i <= n; ++i) aa[i] = 1ll * bb[n + i] * iac[i] % mod;
  memset(bb, 0, sizeof(int) * len);
  for (int i = 0; i <= n; ++i) aa[i] = 1ll * aa[i] * fpow(ginv(i + 1), m) % mod;
  for (int i = 0; i <= n; ++i) aa[i] = 1ll * aa[i] * fac[i] % mod;
  for (int i = 0; i <= n; ++i)
    bb[i] = ((n - i) & 1) ? mod - iac[n - i] : iac[n - i];
  ntt(aa, len, 1), ntt(bb, len, 1);
  for (int i = 0; i < len; ++i) bb[i] = 1ll * aa[i] * bb[i] % mod;
  memset(aa, 0, sizeof(int) * len), ntt(bb, len, 0);
  for (int i = 0; i <= n; ++i) aa[i] = 1ll * bb[n + i] * iac[i] % mod;
  for (int i = 0; i <= n; ++i) printf("%d ", aa[i]);
  return 0;
}
