#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 1;
int tail[maxn];
const long double PI = 3.141592653589793;
const int MOD = 998244353;
int root_pw = (1 << 23);
inline int pw(int a, int b) {
  int res = 1;
  while (b) {
    if (b & 1) res = (long long)res * a % MOD;
    b >>= 1;
    a = (long long)a * a % MOD;
  }
  return res;
}
int root1 = pw(3, 119);
int inv_root = pw(root1, MOD - 2);
int cur = -1;
int iter = 0;
int* w;
int* iw;
int* cur_w;
int def[4][maxn];
void prep(int n) {
  def[0][0] = 1;
  def[1][0] = 1;
  def[1][1] = 1;
  def[2][0] = 1;
  def[2][1] = 3;
  def[2][2] = 1;
  def[3][0] = 1;
  def[3][1] = 5;
  def[3][2] = 5;
  def[3][3] = 1;
  w = new int[4 * maxn];
  iw = new int[4 * maxn];
  for (int l = 2; l <= n; l <<= 1) {
    int half = l >> 1;
    int rt = pw(3, (MOD - 1) / l);
    int inv_rt = pw(rt, MOD - 2);
    int cur_rt = 1;
    int cur_irt = 1;
    for (int i = 0; i < half; ++i, ++iter) {
      w[iter] = cur_rt;
      iw[iter] = cur_irt;
      cur_rt = (long long)cur_rt * rt % MOD;
      cur_irt = (long long)cur_irt * inv_rt % MOD;
    }
  }
}
int* fft(int n, int* x, bool invert) {
  int k = 0;
  while ((1 << k) < n) ++k;
  n = (1 << k);
  cur_w = invert ? iw : w;
  int* a = new int[n];
  memcpy(a, x, sizeof(int) * n);
  if (cur != n) {
    for (int i = 0; i < n; ++i) {
      tail[i] = (i & 1) << (k - 1) | (tail[i >> 1] >> 1);
      cur = n;
    }
  }
  for (int i = 0; i < n; ++i)
    if (i < tail[i]) swap(a[i], a[tail[i]]);
  for (int len = 2; len <= n; len <<= 1) {
    int half = len >> 1;
    for (int bl = 0; bl < n; bl += len) {
      int pos = half - 1;
      for (int i = bl; i < bl + half; ++i, ++pos) {
        int j = i + half;
        int fi = a[i];
        int se = (long long)cur_w[pos] * a[j] % MOD;
        a[i] = fi + se;
        if (a[i] >= MOD) a[i] -= MOD;
        a[j] = fi - se;
        if (a[j] < 0) a[j] += MOD;
      }
    }
  }
  if (invert) {
    int inv = pw(n, MOD - 2);
    for (int i = 0; i < n; ++i) a[i] = (long long)a[i] * inv % MOD;
  }
  return a;
}
int sz;
int* mult(int* a, int* b, int n) {
  int k = 0;
  while ((1 << k) < n) ++k;
  n = (1 << k);
  n <<= 1;
  int* a1 = fft(n, a, 0);
  int* b1 = fft(n, b, 0);
  for (int i = 0; i < n; ++i) a1[i] = (long long)a1[i] * b1[i] % MOD;
  a1 = fft(n, a1, 1);
  delete[] b1;
  return a1;
}
int layer[3][maxn];
void bin(int n) {
  if (n <= 2) {
    memcpy(layer[0], def[n], sz * sizeof(int));
    memcpy(layer[1], def[n - 1], sz * sizeof(int));
    memcpy(layer[2], def[n - 2], sz * sizeof(int));
    return;
  }
  if (n & 1) {
    bin(n - 1);
    int* fi = mult(layer[0], def[1], sz);
    int* temp = mult(layer[1], def[0], sz);
    for (int i = 0; i < sz - 1; ++i) {
      fi[i + 1] += temp[i];
      if (fi[i + 1] >= MOD) fi[i + 1] -= MOD;
    }
    memcpy(layer[2], layer[1], sz * sizeof(int));
    memcpy(layer[1], layer[0], sz * sizeof(int));
    memcpy(layer[0], fi, sz * sizeof(int));
    delete[] fi;
    delete[] temp;
  } else {
    bin(n / 2);
    int* fi = mult(layer[0], layer[0], sz);
    int* temp = mult(layer[1], layer[1], sz);
    int* th = temp;
    for (int i = 0; i < sz - 1; ++i) {
      fi[i + 1] += temp[i];
      if (fi[i + 1] >= MOD) fi[i + 1] -= MOD;
    }
    int* se = mult(layer[0], layer[1], sz);
    temp = mult(layer[1], layer[2], sz);
    for (int i = 0; i < sz - 1; ++i) {
      se[i + 1] += temp[i];
      if (se[i + 1] >= MOD) se[i + 1] -= MOD;
    }
    temp = mult(layer[2], layer[2], sz);
    for (int i = 0; i < sz - 1; ++i) {
      th[i + 1] += temp[i];
      if (th[i + 1] >= MOD) th[i + 1] -= MOD;
    }
    memcpy(layer[0], fi, sz * sizeof(int));
    memcpy(layer[1], se, sz * sizeof(int));
    memcpy(layer[2], th, sz * sizeof(int));
    delete[] temp;
    delete[] fi;
    delete[] se;
    delete[] th;
  }
}
int main() {
  int n;
  scanf("%d", &n);
  int k;
  scanf("%d", &k);
  sz = max((k + 1), 10);
  int lg = 0;
  while ((1 << lg) < sz) ++lg;
  sz = (1 << lg);
  prep(2 * sz);
  if (n <= 2) {
    for (int i = 1; i <= k; ++i) printf("%d ", def[n][i]);
    return 0;
  }
  bin(n);
  for (int i = 1; i <= k; ++i) printf("%d ", layer[0][i]);
}
