#include <bits/stdc++.h>
const int N = 1 << 16 | 1, P = 998244353;
int n, k, m, lim, w[N], rev[N], pw[N], fac[N], ifac[N], ffac[N], f[N], g[N];
int mod(int x) { return x + (x >> 31 & P); }
int pow(int a, int b) {
  int r = 1;
  for (; b; b >>= 1, a = 1ll * a * a % P)
    if (b & 1) r = 1ll * a * r % P;
  return r;
}
void init(int deg) {
  int half = (lim = 1 << (33 - __builtin_clz(deg))) / 2,
      g = pow(3, (P - 1) / lim);
  w[half] = fac[0] = ifac[0] = ffac[0] = pw[0] = 1;
  for (int i = 1; i < lim; ++i)
    rev[i] = (rev[i >> 1] >> 1) | (i & 1 ? half : 0);
  for (int i = 1; i <= deg; ++i)
    ifac[i] = pow(fac[i] = 1ll * fac[i - 1] * i % P, P - 2),
    ffac[i] = ffac[i - 1] * (n - i + 1ll) % P, pw[i] = mod(2 * pw[i - 1] % P);
  for (int i = half + 1; i < lim; ++i) w[i] = 1ll * g * w[i - 1] % P;
  for (int i = half - 1; i; --i) w[i] = w[i << 1];
}
void NTT(int* a, int f) {
  if (!~f) std::reverse(a + 1, a + lim);
  for (int i = 1; i < lim; ++i)
    if (i < rev[i]) std::swap(a[i], a[rev[i]]);
  for (int i = 1; i < lim; i <<= 1)
    for (int j = 0, d = i << 1; j < lim; j += d)
      for (int k = 0, x; k < i; ++k)
        x = 1ll * w[i | k] * a[i | j | k] % P, a[i | j | k] = mod(a[j | k] - x),
        a[j | k] = mod(a[j | k] + x - P);
  if (!~f)
    for (int i = 0, x = P - (P - 1) / lim; i < lim; ++i)
      a[i] = 1ll * x * a[i] % P;
}
int main() {
  scanf("%d%d", &n, &k), init(m = std::min(n, k));
  for (int i = 0; i <= m; ++i)
    f[i] = 1ll * ifac[i] * mod((i & 1 ? -1 : 1) * pow(ffac[i], P - 2)) % P,
    g[i] = 1ll * pw[i] * ifac[i] % P * ifac[i] % P;
  NTT(f, 1), NTT(g, 1);
  for (int i = 0; i < lim; ++i) f[i] = 1ll * f[i] * g[i] % P;
  NTT(f, -1);
  for (int i = 1; i <= m; ++i)
    printf("%lld ", 1ll * fac[i] * ffac[i] % P * f[i] % P);
  for (int i = m + 1; i <= k; ++i) printf("%d ", 0);
}
