#include <bits/stdc++.h>
using namespace std;
const int mo = 998244353;
const int K = 1 << 17;
int n, k, len, ny, w[K], f[11][K], A[K], B[K], C[K], a[K], b[K], c[K], id[K],
    tp[K], Tp[K];
int mul(int x, int y) {
  int ret = 1;
  while (y) {
    if (y % 2) ret = 1LL * ret * x % mo;
    y /= 2;
    x = 1LL * x * x % mo;
  }
  return ret;
}
void DFT(int *a, int sig) {
  for (int i = 0; i <= len - 1; i++) tp[i] = a[id[i]];
  for (int m = 2; m <= len; m *= 2) {
    int half = m / 2, bei = len / m;
    for (int i = 0; i <= half - 1; i++) {
      int W;
      if (sig == 1)
        W = w[bei * i];
      else
        W = w[len - bei * i];
      for (int j = i; j < len; j += m) {
        int u = tp[j], v = 1LL * tp[j + half] * W % mo;
        tp[j] = (u + v) % mo;
        tp[j + half] = (u - v + mo) % mo;
      }
    }
  }
  for (int i = 0; i <= len - 1; i++) a[i] = tp[i];
  if (sig == -1)
    for (int i = 0; i <= len - 1; i++) a[i] = 1LL * a[i] * ny % mo;
}
void solve(int n) {
  if (n <= 10) {
    for (int i = 0; i <= len - 1; i++) {
      A[i] = f[n][i];
      B[i] = f[n - 1][i];
      C[i] = f[n - 2][i];
    }
    return;
  }
  solve(n / 2);
  DFT(A, 1);
  DFT(B, 1);
  DFT(C, 1);
  for (int i = 0; i <= len - 1; i++) a[i] = b[i] = c[i] = 0;
  for (int i = 0; i <= len - 1; i++) Tp[i] = 1LL * A[i] * A[i] % mo;
  DFT(Tp, -1);
  for (int i = 0; i <= len - 1; i++) a[i] = (a[i] + Tp[i]) % mo;
  for (int i = 0; i <= len - 1; i++) Tp[i] = 1LL * B[i] * B[i] % mo;
  DFT(Tp, -1);
  for (int i = 0; i <= len - 1; i++) c[i] = (c[i] + Tp[i]) % mo;
  for (int i = 1; i <= len - 1; i++) a[i] = (a[i] + Tp[i - 1]) % mo;
  for (int i = 0; i <= len - 1; i++) Tp[i] = 1LL * C[i] * C[i] % mo;
  DFT(Tp, -1);
  for (int i = 1; i <= len - 1; i++) c[i] = (c[i] + Tp[i - 1]) % mo;
  for (int i = 0; i <= len - 1; i++) Tp[i] = 1LL * A[i] * B[i] % mo;
  DFT(Tp, -1);
  for (int i = 0; i <= len - 1; i++) b[i] = (b[i] + Tp[i]) % mo;
  for (int i = 0; i <= len - 1; i++) Tp[i] = 1LL * B[i] * C[i] % mo;
  DFT(Tp, -1);
  for (int i = 1; i <= len - 1; i++) b[i] = (b[i] + Tp[i - 1]) % mo;
  if (n % 2) {
    for (int i = 0; i <= len - 1; i++) Tp[i] = 0;
    Tp[0] = 1;
    for (int i = 1; i <= len - 1; i++)
      Tp[i] = (1LL * a[i] + a[i - 1] + b[i - 1]) % mo;
    for (int i = 0; i <= len - 1; i++) {
      c[i] = b[i];
      b[i] = a[i];
      a[i] = Tp[i];
    }
  }
  for (int i = 0; i <= len - 1; i++) A[i] = B[i] = C[i] = 0;
  for (int i = 0; i <= k; i++) {
    A[i] = a[i];
    B[i] = b[i];
    C[i] = c[i];
  }
}
int main() {
  scanf("%d%d", &n, &k);
  len = 1 << 16;
  ny = mul(len, mo - 2);
  w[0] = 1;
  w[1] = mul(3, (mo - 1) / len);
  for (int i = 2; i <= len; i++) w[i] = 1LL * w[i - 1] * w[1] % mo;
  for (int i = 0; i <= len - 1; i++)
    for (int b1 = 1, b2 = len / 2; b1 < len; b1 *= 2, b2 /= 2)
      if (i & b1) id[i] += b2;
  f[0][0] = f[1][0] = f[1][1] = 1;
  for (int i = 2; i <= 10; i++) {
    f[i][0] = 1;
    for (int j = 1; j <= len - 1; j++)
      f[i][j] = (1LL * f[i - 1][j] + f[i - 1][j - 1] + f[i - 2][j - 1]) % mo;
  }
  solve(n);
  for (int i = 1; i <= k; i++) printf("%d ", A[i]);
  printf("\n");
  return 0;
}
