#include <bits/stdc++.h>
using namespace std;
const int N = 4e5 + 3, p = 998244353, G = 3, Gi = 332748118;
long long n, m;
int a[N], b[N], P[N], fac[N], inv[N], r[N];
inline long long in() {
  char c;
  int f = 1;
  while ((c = getchar()) < '0' || c > '9')
    if (c == '-') f = -1;
  long long x = c - '0';
  while ((c = getchar()) >= '0' && c <= '9') x = x * 10 + c - '0';
  return x * f;
}
inline int mod(int x) { return x >= p ? x - p : x; }
inline int ksm(int a, int b) {
  int c = 1;
  while (b) {
    if (b & 1) c = 1ll * c * a % p;
    a = 1ll * a * a % p, b >>= 1;
  }
  return c;
}
inline void calc(int lim) {
  for (int i = 0; i < lim; ++i)
    r[i] = (r[i >> 1] >> 1) | ((i & 1) * (lim >> 1));
}
inline void NTT(int *a, int lim, int op) {
  calc(lim);
  for (int i = 0; i < lim; ++i)
    if (i < r[i]) swap(a[i], a[r[i]]);
  for (int i = 1; i < lim; i <<= 1) {
    int wn = ksm(~op ? G : Gi, (p - 1) / (i << 1));
    for (int j = 0; j < lim; j += i << 1) {
      int w = 1;
      for (int k = 0; k < i; ++k, w = 1ll * w * wn % p) {
        int x = a[j + k], y = 1ll * w * a[j + i + k] % p;
        a[j + k] = mod(x + y), a[j + i + k] = mod(x - y + p);
      }
    }
  }
  if (op == -1) {
    int inv = ksm(lim, p - 2);
    for (int i = 0; i < lim; ++i) a[i] = 1ll * a[i] * inv % p;
  }
}
inline void mul(int *a, int *b, int *c, int n, int m) {
  int lim = 1, _a[N], _b[N];
  while (lim < n + m - 1) lim <<= 1;
  memcpy(_a, a, 4 * n), memcpy(_b, b, 4 * m), memset(_a + n, 0, 4 * (lim - n)),
      memset(_b + m, 0, 4 * (lim - m));
  NTT(_a, lim, 1), NTT(_b, lim, 1);
  for (int i = 0; i < lim; ++i) c[i] = 1ll * _a[i] * _b[i] % p;
  NTT(c, lim, -1);
}
inline void pre(int n) {
  fac[0] = 1;
  for (int i = 1; i <= n; ++i) fac[i] = 1ll * fac[i - 1] * i % p;
  inv[n] = ksm(fac[n], p - 2);
  for (int i = n; i; --i) inv[i - 1] = 1ll * inv[i] * i % p;
}
int main() {
  n = in(), m = in() % (p - 1), pre(n);
  for (int i = 0; i <= n; ++i) P[i] = in();
  for (int i = 0; i <= n; ++i) a[i] = inv[i];
  for (int i = 0; i <= n; ++i) b[i] = 1ll * fac[i] * P[i] % p;
  reverse(b, b + n + 1), mul(a, b, a, n + 1, n + 1);
  for (int i = 0; i <= n; ++i)
    a[i] = 1ll * a[i] * ksm(ksm(n - i + 1, m), p - 2) % p;
  for (int i = 0; i <= n; ++i) b[i] = i & 1 ? p - inv[i] : inv[i];
  mul(a, b, a, n + 1, n + 1), reverse(a, a + n + 1);
  for (int i = 0; i <= n; ++i) printf("%d ", 1ll * inv[i] * a[i] % p);
  return 0;
}
