#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353, G = 3, Gi = 332748118, N = 140005;
long long power(long long base, long long b) {
  long long ret = 1;
  while (b) {
    if (b & 1) ret = ret * base % mod;
    b >>= 1;
    base = base * base % mod;
  }
  return ret;
}
int limit, len, pos[N];
void getlen(int n) {
  limit = 1, len = 0;
  n <<= 1;
  while (limit < n) limit <<= 1, ++len;
  for (int i = 0; i < limit; ++i)
    pos[i] = (pos[i >> 1] >> 1) | ((i & 1) << (len - 1));
}
inline void ntt(long long *a, int n, int type) {
  for (int i = 0; i < limit; ++i)
    if (i < pos[i]) swap(a[i], a[pos[i]]);
  for (int mid = 1; mid < limit; mid <<= 1) {
    long long w0 = power((type == 1 ? G : Gi), (mod - 1) / (mid << 1));
    for (int j = 0; j < limit; j += (mid << 1)) {
      long long w = 1, x, y;
      for (int k = 0; k < mid; ++k, w = w * w0 % mod) {
        x = a[j + k], y = a[j + mid + k] * w % mod;
        a[j + k] = (x + y) % mod;
        a[j + mid + k] = (x - y + mod) % mod;
      }
    }
  }
  if (type == -1) {
    long long inv = power(limit, mod - 2);
    for (int i = 0; i < n; ++i) a[i] = a[i] * inv % mod;
    for (int i = n; i < limit; ++i) a[i] = 0;
  }
}
long long ans[3][N];
inline void copy(long long *a, long long *b, int n) {
  for (int i = 0; i < n; ++i) b[i] = a[i];
}
long long tmp[3][N], t[3][N];
int k;
void mul() {
  getlen(k);
  for (int i = 0; i <= 2; ++i) ntt(ans[i], k, 1);
  for (int i = 0; i <= 2; ++i) {
    for (int j = 0; j < limit; ++j) {
      tmp[i][j] = ans[i / 2][j] * ans[i - i / 2][j] % mod;
    }
    for (int j = 0; j < limit; ++j) {
      t[i][j] = ans[i / 2 + 1][j] * ans[i - i / 2 + 1][j] % mod;
    }
  }
  for (int i = 0; i <= 2; ++i) {
    ntt(tmp[i], k, -1);
    ntt(t[i], k, -1);
  }
  for (int i = 0; i <= 2; ++i) {
    for (int j = 1; j < limit; ++j) {
      tmp[i][j] = (tmp[i][j] + t[i][j - 1]) % mod;
    }
  }
  for (int i = 0; i <= 2; ++i) {
    copy(tmp[i], ans[i], k);
    for (int j = k; j < limit; ++j) ans[i][j] = 0;
  }
}
void add() {
  copy(ans[1], ans[2], k);
  copy(ans[0], ans[1], k);
  for (int i = 0; i < k; ++i) {
    ans[0][i] = ans[1][i];
    if (i) ans[0][i] = (ans[0][i] + ans[1][i - 1] + ans[2][i - 1]) % mod;
  }
}
int n;
int main() {
  scanf("%d%d", &n, &k);
  ++k;
  ans[0][0] = 1;
  int sta = 0;
  for (int i = 1 << 30; i; i >>= 1) {
    if (sta) mul(), sta <<= 1;
    if (n & i) add(), sta++;
  }
  for (int i = 1; i < k; ++i) printf("%lld ", ans[0][i]);
  return 0;
}
