#include <bits/stdc++.h>
using namespace std;
int read() {
  int x = 0, sgn = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') sgn = -1;
  for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);
  return x * sgn;
}
const int N = 5e5 + 10;
const int mod = 998244353;
int rev[N << 2], len, n, k;
int Wn[N << 2];
long long qp(long long x, int t) {
  long long res = 1;
  for (; t; t >>= 1, x = x * x % mod)
    if (t & 1) res = res * x % mod;
  return res;
}
void init_NTT(int n) {
  len = 1;
  for (; len < 2 * n; len <<= 1)
    ;
  for (int i = 0; i < len; i++)
    rev[i] = rev[i >> 1] >> 1 | (i & 1 ? len >> 1 : 0);
}
void NTT(int *f, int on = 1) {
  for (int i = 1; i < len; i++)
    if (i < rev[i]) swap(f[i], f[rev[i]]);
  for (int h = 2; h <= len; h <<= 1) {
    int wn = Wn[h];
    for (int i = 0; i < len; i += h) {
      int ww = 1;
      for (int k = i; k < i + h / 2; k++) {
        int u = f[k], v = 1ll * f[k + h / 2] * ww % mod;
        ww = 1ll * ww * wn % mod;
        f[k] = (u + v) % mod, f[k + h / 2] = (u - v + mod) % mod;
      }
    }
  }
  if (on == -1) {
    reverse(f + 1, f + len);
    int inv = qp(len, mod - 2);
    for (int i = 0; i < len; i++) f[i] = 1ll * f[i] * inv % mod;
  }
}
int f[3][N << 2], g[5][N << 2];
void shift(int l) {
  for (int i = 0; i < len; i++)
    for (int k = 0; k < 5; k++) g[k][i] = 0;
  for (int i = 0; i < 3; i++) NTT(f[i]);
  for (int i = 0; i < len; i++) {
    g[0][i] = 1ll * f[0][i] * f[0][i] % mod;
    g[1][i] = 1ll * f[1][i] * f[1][i] % mod;
    g[2][i] = 1ll * f[0][i] * f[1][i] % mod;
    g[3][i] = 1ll * f[2][i] * f[1][i] % mod;
    g[4][i] = 1ll * f[2][i] * f[2][i] % mod;
  }
  for (int i = 0; i < 5; i++) NTT(g[i], -1);
  for (int i = 0; i < len; i++) {
    f[0][i] = (g[0][i] + (i > 0 ? g[1][i - 1] : 0)) % mod;
    f[1][i] = (g[2][i] + (i > 0 ? g[3][i - 1] : 0)) % mod;
    f[2][i] = (g[1][i] + (i > 0 ? g[4][i - 1] : 0)) % mod;
  }
  for (int i = l; i < len; i++)
    for (int j = 0; j < 3; j++) f[j][i] = 0;
}
void bit(int l) {
  for (int i = 0; i < l; i++) f[2][i] = f[1][i], f[1][i] = f[0][i], f[0][i] = 0;
  f[0][0] = 1;
  for (int i = 1; i < l; i++)
    f[0][i] = ((f[1][i - 1] + f[2][i - 1]) % mod + f[1][i]) % mod;
}
int main() {
  n = read(), k = read();
  f[0][0] = f[1][0] = f[0][1] = 1;
  int lg = log2(n);
  for (int h = 1; h < N << 2; h <<= 1) Wn[h] = qp(3, (mod - 1) / h);
  init_NTT(k + 5);
  for (int i = lg - 1; i >= 0; i--) {
    shift(k + 5);
    if (n >> i & 1) bit(k + 5);
  }
  for (int i = 1; i <= k; i++) printf("%d%c", f[0][i], " \n"[i == k]);
  return 0;
}
