#include <bits/stdc++.h>
using namespace std;
const unsigned long long mod = 998244353;
const unsigned long long G = 3;
const unsigned long long iG = 332748118;
int n, k, len;
int o[160005], p[160005], q[160005], r[160005], s[160005], t[160005], u[160005],
    v[160005], w[160005], x[160005], y[160005];
inline int ksm(int a, int b = mod - 2) {
  int res = 1;
  for (; b; b >>= 1, a = 1ll * a * a % mod)
    if (b & 1) res = 1ll * res * a % mod;
  return res;
}
inline void cpy(int *a, int *b, int len) { memcpy(a, b, len * sizeof(int)); }
inline void clr(int *a, int len) { memset(a, 0, len * sizeof(int)); }
int tr[160005];
inline void getr(int len) {
  for (int i = 0; i < len; i++)
    tr[i] = (tr[i >> 1] >> 1) | ((i & 1) ? (len >> 1) : 0);
}
unsigned long long g[160005], uu[160005] = {1};
inline void ntt(int *f, int len, bool flag) {
  for (int i = 0; i < len; i++) g[i] = f[tr[i]] % mod;
  for (int ln = 2; ln <= len; ln <<= 1) {
    int p = ln >> 1;
    unsigned long long U = ksm(flag ? G : iG, (mod - 1) / ln);
    for (int i = 1; i <= ln; i++) uu[i] = uu[i - 1] * U % mod;
    for (int i = 0; i < len; i += ln) {
      for (int j = i; j < i + p; j++) {
        unsigned long long t = uu[j - i] * g[j + p] % mod;
        g[j + p] = g[j] + mod - t;
        g[j] = g[j] + t;
      }
    }
    if (ln == (1 << 10))
      for (int i = 0; i < len; i++) g[i] %= mod;
  }
  if (!flag) {
    unsigned long long iL = ksm(len);
    for (int i = 0; i < len; i++) f[i] = 1ll * g[i] * iL % mod;
  } else
    for (int i = 0; i < len; i++) f[i] = 1ll * g[i] % mod;
}
inline int read() {
  int f = 0, s = 0;
  char c = getchar();
  while (c > '9' || c < '0') f = (c == '-'), c = getchar();
  while (c >= '0' && c <= '9')
    s = (s << 3) + (s << 1) + (c ^ '0'), c = getchar();
  return f ? -s : s;
}
signed main() {
  n = read();
  k = read();
  o[0] = 1;
  for (len = 1; len < ((k + 1) << 1); len <<= 1)
    ;
  int T = 0;
  getr(len);
  int pt = 0, fj[34];
  while (n) {
    fj[++pt] = n & 1;
    n >>= 1;
  }
  for (int j = pt; j >= 1; j--) {
    cpy(w, o, len);
    cpy(x, p, len);
    cpy(y, q, len);
    ntt(w, len, 1);
    ntt(x, len, 1);
    ntt(y, len, 1);
    for (int i = 0; i < len; i++) {
      r[i] = 1ll * w[i] * w[i] % mod;
      s[i] = 1ll * w[i] * x[i] % mod;
      t[i] = 1ll * x[i] * x[i] % mod;
      u[i] = 1ll * x[i] * y[i] % mod;
      v[i] = 1ll * y[i] * y[i] % mod;
    }
    ntt(r, len, 0);
    ntt(s, len, 0);
    ntt(t, len, 0);
    ntt(u, len, 0);
    ntt(v, len, 0);
    for (int i = 0; i < len; i++) {
      o[i] = (r[i] + t[i - 1]) % mod;
      p[i] = (s[i] + u[i - 1]) % mod;
      q[i] = (t[i] + v[i - 1]) % mod;
    }
    T <<= 1;
    if (fj[j]) {
      T |= 1;
      cpy(q, p, len);
      cpy(p, o, len);
      for (int i = 0; i < len; i++)
        o[i] = ((p[i] + p[i - 1]) % mod + q[i - 1]) % mod;
    }
    clr(o + k + 1, len - k + 1);
    clr(p + k + 1, len - k + 1);
    clr(q + k + 1, len - k + 1);
    n >>= 1;
  }
  for (int i = 1; i <= k; i++) printf("%d ", o[i]);
  return 0;
}
