#include <bits/stdc++.h>
using namespace std;
long long ret[100000], nn[100000], nn1[100000], nn2[100000];
long long nn00[100000], nn11[100000], nn22[100000];
long long nn01[100000], nn12[100000];
long long A = 119, B = 23, MOD = 998244353, R = 3, SIZE = 16;
long long N = (1 << SIZE);
long long Pow(long long x, long long y) {
  long long ans = 1;
  while (y) {
    if (y % 2) ans = (ans * x) % MOD;
    x = (x * x) % MOD;
    y /= 2;
  }
  return ans;
}
int Rev(int x) {
  int t = 0;
  for (int i = 1; i <= SIZE; ++i) {
    t <<= 1;
    t += (x & 1);
    x >>= 1;
  }
  return t;
}
void FFT(long long *a, bool f) {
  long long i, j, k, x, y, z;
  for (i = 0; i < N; ++i) {
    j = Rev(i);
    if (i < j) {
      k = a[i];
      a[i] = a[j];
      a[j] = k;
    }
  }
  for (i = 1; i < N; i <<= 1) {
    x = Pow(f ? Pow(R, MOD - 2) : R, MOD / i >> 1);
    for (j = 0; j < N; j += (i << 1)) {
      y = 1;
      for (k = 0; k < i; ++k) {
        z = (a[i + j + k] * y) % MOD;
        a[i + j + k] = (a[j + k] - z) % MOD;
        if (a[i + j + k] < 0) a[i + j + k] += MOD;
        a[j + k] += z;
        a[j + k] %= MOD;
        y = (y * x) % MOD;
      }
    }
  }
  if (f) {
    j = Pow(N, MOD - 2);
    for (i = 0; i < N; ++i) a[i] = (a[i] * j) % MOD;
  }
}
void solve(int num) {
  if (num == 4) {
    nn[0] = 1;
    nn[1] = 7;
    nn[2] = 13;
    nn[3] = 7;
    nn[4] = 1;
    nn1[0] = 1;
    nn1[1] = 5;
    nn1[2] = 5;
    nn1[3] = 1;
    nn1[4] = 0;
    nn2[0] = 1;
    nn2[1] = 3;
    nn2[2] = 1;
    nn2[3] = 0;
    nn2[4] = 0;
    for (int i = 5; i <= N; ++i) nn[i] = nn1[i] = nn2[i] = 0;
    return;
  }
  if (num == 3) {
    nn[0] = 1;
    nn[1] = 5;
    nn[2] = 5;
    nn[3] = 1;
    nn[4] = 0;
    nn1[0] = 1;
    nn1[1] = 3;
    nn1[2] = 1;
    nn1[3] = 0;
    nn1[4] = 0;
    nn2[0] = 1;
    nn2[1] = 1;
    nn2[2] = 0;
    nn2[3] = 0;
    nn2[4] = 0;
    for (int i = 5; i <= N; ++i) nn[i] = nn1[i] = nn2[i] = 0;
    return;
  }
  if (num == 2) {
    nn[0] = 1;
    nn[1] = 3;
    nn[2] = 1;
    for (int i = 3; i <= N; ++i) nn[i] = 0;
    return;
  }
  if (num == 1) {
    nn[0] = 1;
    nn[1] = 1;
    for (int i = 2; i <= N; ++i) nn[i] = 0;
    return;
  }
  if (num % 2)
    solve(num - 1);
  else
    solve(num / 2);
  if (num % 2) {
    int i;
    ret[0] = 1;
    for (i = 1; i < N; ++i) ret[i] = (nn[i] + nn[i - 1] + nn1[i - 1]) % MOD;
    for (i = 0; i < N; ++i) {
      nn2[i] = nn1[i];
      nn1[i] = nn[i];
      nn[i] = ret[i];
    }
    for (i = N / 2; i < N; ++i) nn[i] = nn1[i] = nn2[i] = 0;
  } else {
    int i;
    FFT(nn, false);
    FFT(nn1, false);
    FFT(nn2, false);
    for (i = 0; i < N; ++i) nn00[i] = (nn[i] * nn[i]) % MOD;
    for (i = 0; i < N; ++i) nn11[i] = (nn1[i] * nn1[i]) % MOD;
    for (i = 0; i < N; ++i) nn22[i] = (nn2[i] * nn2[i]) % MOD;
    for (i = 0; i < N; ++i) nn01[i] = (nn[i] * nn1[i]) % MOD;
    for (i = 0; i < N; ++i) nn12[i] = (nn1[i] * nn2[i]) % MOD;
    FFT(nn00, true);
    FFT(nn11, true);
    FFT(nn22, true);
    FFT(nn01, true);
    FFT(nn12, true);
    nn[0] = nn1[0] = nn2[0] = 1;
    for (i = 1; i < N / 2; ++i) nn[i] = (nn00[i] + nn11[i - 1]) % MOD;
    for (i = 1; i < N / 2; ++i) nn1[i] = (nn01[i] + nn12[i - 1]) % MOD;
    for (i = 1; i < N / 2; ++i) nn2[i] = (nn11[i] + nn22[i - 1]) % MOD;
    for (i = N / 2; i < N; ++i) nn[i] = nn1[i] = nn2[i] = 0;
  }
  return;
}
int main() {
  int n, T;
  scanf("%d%d", &n, &T);
  solve(n);
  for (int i = 1; i <= T; ++i) printf("%lld ", nn[i]);
}
