#include <bits/stdc++.h>
using namespace std;
template <class T>
bool ckmax(T& x, T y) {
  return x < y ? x = y, 1 : 0;
}
template <class T>
bool ckmin(T& x, T y) {
  return x > y ? x = y, 1 : 0;
}
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = 0;
    ch = getchar();
  }
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return f ? x : -x;
}
const int N = 1 << 15;
const int M = N << 2;
int qpow(int n, int k) {
  int res = 1;
  for (; k; k >>= 1, n = 1ll * n * n % 998244353)
    if (k & 1) res = 1ll * n * res % 998244353;
  return res;
}
int lg, lim, rev[M];
void init(const int& n) {
  for (lg = 0, lim = 1; lim < n; lim <<= 1, ++lg)
    ;
  for (int i = 0; i < lim; ++i)
    rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (lg - 1));
}
void NTT(int* a, int op) {
  for (int i = 0; i < lim; ++i)
    if (i > rev[i]) swap(a[i], a[rev[i]]);
  int g = op ? 3 : qpow(3, 998244353 - 2);
  for (int i = 1; i < lim; i <<= 1) {
    int wn = qpow(g, (998244353 - 1) / (i << 1));
    for (int j = 0; j < lim; j += i << 1) {
      int w0 = 1;
      for (int k = 0; k < i; ++k, w0 = 1ll * w0 * wn % 998244353) {
        const int X = a[j + k], Y = 1ll * w0 * a[i + j + k] % 998244353;
        a[j + k] = (X + Y) % 998244353,
              a[i + j + k] = (X - Y + 998244353) % 998244353;
      }
    }
  }
  if (op) return;
  int ilim = qpow(lim, 998244353 - 2);
  for (int i = 0; i < lim; ++i) a[i] = 1ll * a[i] * ilim % 998244353;
}
int n, k, dwn[N], pw2[N], f[M], g[M], fac[N];
void initmath(const int& C) {
  dwn[0] = 1;
  for (int i = 1, iend = C; i <= iend; ++i)
    dwn[i] = 1ll * dwn[i - 1] * (n - i + 1) % 998244353;
  pw2[0] = 1;
  for (int i = 1, iend = C; i <= iend; ++i)
    pw2[i] = (pw2[i - 1] << 1) % 998244353;
  fac[0] = 1;
  for (int i = 1, iend = C; i <= iend; ++i)
    fac[i] = 1ll * fac[i - 1] * i % 998244353;
}
signed main() {
  n = read(), k = read(), initmath(k);
  for (int i = 0, j = 1; i <= k; ++i, j ^= 1)
    f[i] =
        j ? qpow(1ll * fac[i] * dwn[i] % 998244353, 998244353 - 2)
          : 998244353 - qpow(1ll * fac[i] * dwn[i] % 998244353, 998244353 - 2);
  for (int i = 0; i <= k; ++i)
    g[i] = 1ll * pw2[i] *
           qpow(1ll * fac[i] * fac[i] % 998244353, 998244353 - 2) % 998244353;
  init(k << 1), NTT(f, 1), NTT(g, 1);
  for (int i = 0; i < lim; ++i) f[i] = 1ll * f[i] * g[i] % 998244353;
  NTT(f, 0);
  for (int i = 1; i <= k; ++i)
    f[i] = 1ll * f[i] * fac[i] % 998244353 * dwn[i] % 998244353;
  for (int i = 1; i <= k; ++i) printf("%d ", f[i]);
  return 0;
}
