#include <bits/stdc++.h>
using namespace std;
namespace polynomials {
int const p = 998244353, g = 3;
int const N = (1 << 18) + 1;
int w[N], iv[N], r[N], last;
int mod(int x) { return x >= p ? x - p : x; }
int pw(int x, int y) {
  int res = 1;
  while (y) {
    if (y & 1) res = 1ll * res * x % p;
    x = 1ll * x * x % p;
    y >>= 1;
  }
  return res;
}
void init(int n) {
  int lim = 1;
  while (lim < n) lim <<= 1;
  iv[1] = 1;
  for (int i = 2; i <= lim; i++) iv[i] = mod(p - 1ll * (p / i) * iv[p % i] % p);
  for (int i = 1; i < lim; i <<= 1) {
    int wn = pw(g, (p - 1) / (i << 1));
    for (int j = 0, ww = 1; j < i; j++, ww = 1ll * ww * wn % p) w[i + j] = ww;
  }
}
void ntt(vector<int> &f, int n, int op) {
  f.resize(n);
  for (int i = 1; i < n; i++)
    r[i] = (r[i >> 1] >> 1) | ((i & 1) ? (n >> 1) : 0);
  for (int i = 1; i < n; i++)
    if (i < r[i]) swap(f[i], f[r[i]]);
  for (int i = 1; i < n; i <<= 1)
    for (int j = 0; j < n; j += i << 1)
      for (int k = 0; k < i; k++) {
        int x = f[j + k], y = 1ll * f[i + j + k] * w[i + k] % p;
        f[j + k] = mod(x + y);
        f[i + j + k] = mod(x - y + p);
      }
  if (op == -1) {
    reverse(&f[1], &f[n]);
    for (int i = 0; i < n; i++) f[i] = 1ll * f[i] * iv[n] % p;
  }
}
}  // namespace polynomials
using namespace polynomials;
int fac[100005], inv[100005];
int main() {
  int n, lim = 1;
  long long m;
  scanf("%d%lld", &n, &m);
  m %= (p - 1);
  while (lim < ((n + 1) << 1)) lim <<= 1;
  init(lim);
  vector<int> a(n + 1), b(n + 1), c(n + 1);
  fac[0] = inv[0] = 1;
  for (int i = 1; i <= n; i++)
    fac[i] = 1ll * fac[i - 1] * i % p, inv[i] = 1ll * inv[i - 1] * iv[i] % p;
  for (int i = 0; i <= n; i++)
    scanf("%d", &c[i]), c[i] = 1ll * fac[i] * c[i] % p;
  for (int i = 0; i <= n; i++) b[i] = inv[n - i];
  ntt(c, lim, 1), ntt(b, lim, 1);
  for (int i = 0; i < lim; i++) c[i] = 1ll * c[i] * b[i] % p;
  ntt(c, lim, -1);
  for (int i = 0; i <= n; i++) {
    a[i] = 1ll * c[n + i] * pw(iv[i + 1], m) % p;
    if (i & 1) a[i] = mod(p - a[i]);
  }
  ntt(a, lim, 1);
  for (int i = 0; i < lim; i++) a[i] = 1ll * a[i] * b[i] % p;
  ntt(a, lim, -1);
  for (int i = 0; i <= n; i++)
    a[n + i] = 1ll * a[n + i] * inv[i] % p * ((i & 1) ? (p - 1) : 1) % p,
          printf("%d ", a[n + i]);
  return 0;
}
