#include <bits/stdc++.h>
using namespace std;
int n, k, tn, tl, r[131073], w[2][131073], rn;
int a[131073], b[131073], c[131073], d[131073], e[131073], f[131073],
    d1[131073], e1[131073];
int pow(int a, int b, int c) {
  int ans = 1;
  for (; b; a = (long long)a * a % c, b >>= 1)
    if (b & 1) ans = (long long)ans * a % c;
  return ans;
}
void pre(int x) {
  tl = 0;
  tn = 1;
  while (tn < x) tn <<= 1, tl++;
  tn <<= 1;
  tl++;
  int W = pow(3, (998244353 - 1) / tn, 998244353);
  w[0][0] = w[1][0] = 1;
  for (int i = 1; i < tn; i++) w[0][i] = (long long)w[0][i - 1] * W % 998244353;
  for (int i = 1; i < tn; i++) w[1][i] = w[0][tn - i];
  for (int i = 1; i < tn; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << (tl - 1));
  rn = pow(tn, 998244353 - 2, 998244353);
}
void dft(int *a, int f) {
  for (int i = 0; i < tn; i++)
    if (i < r[i]) swap(a[i], a[r[i]]);
  for (int i = 1; i < tn; i <<= 1)
    for (int j = 0, t = tn / (i << 1); j < tn; j += i << 1)
      for (int k = 0, l = 0; k < i; k++, l += t) {
        int x = (long long)w[f][l] * a[j + k + i] % 998244353;
        int y = a[j + k];
        a[j + k] = (y + x) % 998244353;
        a[j + k + i] = (y + 998244353 - x) % 998244353;
      }
  if (f)
    for (int i = 0; i < tn; i++) a[i] = (long long)a[i] * rn % 998244353;
}
void Get(int a[], int b[], int c[]) {
  c[0] = 1;
  for (int i = 1; i <= k; i++)
    c[i] = ((long long)b[i] + b[i - 1] + a[i - 1]) % 998244353;
  for (int i = k + 1; i < tn; i++) c[i] = 0;
}
void work(int x) {
  if (x == 0) {
    a[0] = 1;
    for (int i = 1; i < tn; i++) a[i] = 0;
    b[0] = 1;
    b[1] = 1;
    for (int i = 2; i < tn; i++) b[i] = 0;
    return;
  }
  if (x == 1) {
    a[0] = 1;
    a[1] = 1;
    for (int i = 2; i < tn; i++) a[i] = 0;
    b[0] = 1;
    b[1] = 3;
    b[2] = 1;
    for (int i = 3; i < tn; i++) b[i] = 0;
    return;
  }
  work(x / 2 - 1);
  Get(a, b, c);
  for (int i = k + 1; i < tn; i++) a[i] = b[i] = c[i] = 0;
  dft(a, 0);
  dft(b, 0);
  dft(c, 0);
  for (int i = 0; i < tn; i++) {
    d[i] = (long long)b[i] * b[i] % 998244353;
    d1[i] = (long long)a[i] * a[i] % 998244353;
    e[i] = (long long)b[i] * c[i] % 998244353;
    e1[i] = (long long)a[i] * b[i] % 998244353;
  }
  dft(d, 1);
  dft(e, 1);
  dft(d1, 1);
  dft(e1, 1);
  for (int i = 1; i < tn; i++)
    d[i] = (d[i] + d1[i - 1]) % 998244353,
    e[i] = (e[i] + e1[i - 1]) % 998244353;
  if (x & 1) {
    Get(d, e, f);
    for (int i = 0; i < tn; i++) {
      a[i] = i <= k ? e[i] : 0;
      b[i] = i <= k ? f[i] : 0;
    }
  } else {
    for (int i = 0; i < tn; i++) {
      a[i] = i <= k ? d[i] : 0;
      b[i] = i <= k ? e[i] : 0;
    }
  }
}
int main() {
  scanf("%d%d", &n, &k);
  pre(max(k + 1, 4));
  work(n);
  for (int i = 1; i <= k; i++) printf("%d ", (a[i] + 998244353) % 998244353);
  puts("");
}
