#include <bits/stdc++.h>
const int p = 998244353;
const int inv2 = 499122177;
const int MAXN = 140000;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch > '9' || ch < '0') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  do x = (x * 10 + ch - 48) % p, ch = getchar();
  while (ch >= '0' && ch <= '9');
  return (x * f % p + p) % p;
}
int n, k, r[MAXN];
long long c[MAXN] = {1, 6, 1};
long long s[MAXN], f[MAXN], g[MAXN];
long long fastpow(long long a, int b) {
  long long res = 1;
  a %= p;
  while (b) {
    if (b & 1) res = res * a % p;
    a = a * a % p;
    b >>= 1;
  }
  return res;
}
void NTT(long long *a, int N) {
  for (int i = 0; i < N; i++)
    if (i < r[i]) std::swap(a[i], a[r[i]]);
  for (int n = 2, m = 1; n <= N; m = n, n <<= 1) {
    long long g1 = fastpow(3, (p - 1) / n);
    for (int l = 0; l < N; l += n) {
      long long g = 1, t1, t2;
      for (int i = l; i < l + m; i++) {
        t1 = a[i], t2 = g * a[i + m] % p;
        a[i] = (t1 + t2) % p;
        a[i + m] = (t1 - t2 + p) % p;
        g = g * g1 % p;
      }
    }
  }
  return;
}
void INTT(long long *a, int N) {
  NTT(a, N);
  std::reverse(a + 1, a + N);
  int invN = fastpow(N, p - 2);
  for (int i = 0; i < N; i++) a[i] = a[i] * invN % p;
}
long long a1[MAXN], b1[MAXN];
void Inv(long long *a, long long *b, int n) {
  if (n == 1) return void(b[0] = fastpow(a[0], p - 2));
  Inv(a, b, (n + 1) >> 1);
  int N = 1, l = -1;
  while (N <= n << 1) N <<= 1, l++;
  for (int i = 1; i < N; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << l);
  for (int i = 0; i < n; i++) a1[i] = a[i];
  for (int i = n; i < N; i++) a1[i] = 0;
  NTT(a1, N);
  NTT(b, N);
  for (int i = 0; i < N; i++)
    b[i] = ((b[i] << 1) % p + p - a1[i] * b[i] % p * b[i] % p) % p;
  INTT(b, N);
  for (int i = n; i < N; i++) b[i] = 0;
  return;
}
void Dervt(long long *a, long long *b, int n) {
  for (int i = 1; i < n; i++) b[i - 1] = a[i] * i % p;
  b[n - 1] = 0;
}
void Integ(long long *a, long long *b, int n) {
  for (int i = 1; i < n; i++) b[i] = a[i - 1] * fastpow(i, p - 2) % p;
  b[0] = 0;
}
long long f1[MAXN], f2[MAXN];
void Ln(long long *f, long long *g, int n) {
  memset(f1, 0, sizeof(f1));
  memset(f2, 0, sizeof(f2));
  Dervt(f, f1, n);
  Inv(f, f2, n);
  int N = 1, l = -1;
  while (N <= n << 1) N <<= 1, l++;
  for (int i = 1; i < N; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << l);
  NTT(f1, N);
  NTT(f2, N);
  for (int i = 0; i < N; i++) f1[i] = f1[i] * f2[i] % p;
  INTT(f1, N);
  Integ(f1, g, n);
  return;
}
long long g1[MAXN];
void Exp(long long *f, long long *g, int n) {
  if (n == 1) return void(g[0] = 1);
  Exp(f, g, (n + 1) >> 1);
  Ln(g, g1, n);
  int N = 1, l = -1;
  while (N <= n << 1) N <<= 1, l++;
  for (int i = 1; i < N; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << l);
  for (int i = 0; i < n; i++) f1[i] = f[i];
  for (int i = n; i < N; i++) g1[i] = f1[i] = 0;
  for (int i = 0; i < N; i++) f1[i] = ((f1[i] - g1[i]) % p + p) % p;
  f1[0] = (f1[0] + 1) % p;
  NTT(f1, N);
  NTT(g, N);
  for (int i = 0; i < N; i++) g[i] = f1[i] * g[i] % p;
  INTT(g, N);
  for (int i = n; i < N; i++) g[i] = 0;
  return;
}
long long lnf[MAXN];
void Pow(long long *f, long long *g, int n, int k) {
  Ln(f, lnf, n);
  for (int i = 0; i < n; i++) lnf[i] = lnf[i] * k % p;
  memset(g, 0, sizeof(g1));
  Exp(lnf, g, n);
  return;
}
int main() {
  n = read();
  int t = read();
  k = std::min(n, t);
  int N = 1, l = -1;
  while (N <= (k + 1) << 1) N <<= 1, l++;
  for (int i = 1; i < N; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << l);
  Pow(c, s, k + 1, inv2 - 1);
  Pow(c, f, k + 1, inv2);
  f[0]++, f[1]++;
  for (int i = 0; i <= k; i++) f[i] = f[i] * inv2 % p;
  Pow(f, g, k + 1, n + 1);
  NTT(s, N);
  NTT(g, N);
  for (int i = 0; i < N; i++) s[i] = s[i] * g[i] % p;
  INTT(s, N);
  for (int i = 1; i <= k; i++) std::printf("%lld ", s[i]);
  for (int i = k + 1; i <= t; i++) std::printf("0 ");
  std::putchar('\n');
  return 0;
}
