#include <bits/stdc++.h>
long long gi() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) f ^= ch == '-', ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return f ? x : -x;
}
int pow(int x, int y) {
  int ret = 1;
  while (y) {
    if (y & 1) ret = 1ll * ret * x % 998244353;
    x = 1ll * x * x % 998244353;
    y >>= 1;
  }
  return ret;
}
int A[262147], B[262147], fact[100010], ifact[100010], rev[262147], N, lg,
    P[30];
void ntt(int* A, int t) {
  for (int i = 0; i < N; ++i)
    if (i > rev[i]) std::swap(A[i], A[rev[i]]);
  for (int o = 1, _ = 1, w; o < N; o <<= 1, ++_) {
    w = P[_];
    for (int* p = A; p != A + N; p += o << 1)
      for (int i = 0, W = 1; i < o; ++i, W = 1ll * W * w % 998244353) {
        int t = 1ll * p[i + o] * W % 998244353;
        p[i + o] = (p[i] - t + 998244353) % 998244353,
              p[i] = (p[i] + t) % 998244353;
      }
  }
  if (!t) {
    std::reverse(A + 1, A + N);
    for (int i = 0, iv = pow(N, 998244353 - 2); i < N; ++i)
      A[i] = 1ll * A[i] * iv % 998244353;
  }
}
int main() {
  int n = gi(), m = gi() % (998244353 - 1);
  for (int i = 1; i < 24; ++i) P[i] = pow(19260817, 998244353 / (1 << i));
  for (int i = 0; i <= n; ++i) A[i] = gi();
  std::reverse(A, A + n + 1);
  fact[0] = 1;
  for (int i = 1; i <= n; ++i) fact[i] = 1ll * fact[i - 1] * i % 998244353;
  ifact[n] = pow(fact[n], 998244353 - 2);
  for (int i = n; i; --i) ifact[i - 1] = 1ll * ifact[i] * i % 998244353;
  N = 1, lg = 0;
  while (N < (n + 1) * 2) N <<= 1, ++lg;
  for (int i = 0; i < N; ++i) rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << lg - 1);
  for (int i = 0; i <= n; ++i)
    A[i] = 1ll * A[i] * fact[n - i] % 998244353, B[i] = ifact[i] % 998244353;
  ntt(A, 1), ntt(B, 1);
  for (int i = 0; i < N; ++i) A[i] = 1ll * A[i] * B[i] % 998244353;
  ntt(A, 0);
  memset(A + n + 1, 0, 4 * (N - n - 1));
  for (int i = n, M = 1; ~i; --i, M = 998244353 - M)
    A[i] = 1ll * A[i] * pow(n - i + 1, 998244353 - 1 - m) % 998244353 * M %
           998244353;
  ntt(A, 1);
  for (int i = 0; i < N; ++i) A[i] = 1ll * A[i] * B[i] % 998244353;
  ntt(A, 0);
  for (int i = n, M = 1; ~i; --i, M = 998244353 - M)
    printf("%d ", 1ll * ifact[n - i] * A[i] % 998244353 * M % 998244353);
  return 0;
}
