#include <bits/stdc++.h>
using namespace std;
const int MOD = (int)1e9 + 7;
const int INF = (int)1e9;
const long long LINF = (long long)1e18;
const long double PI = acos((long double)-1);
const long double EPS = 1e-9;
inline long long gcd(long long a, long long b) {
  long long r;
  while (b) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}
inline long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
inline long long fpow(long long n, long long k, int p = MOD) {
  long long r = 1;
  for (; k; k >>= 1) {
    if (k & 1) r = r * n % p;
    n = n * n % p;
  }
  return r;
}
template <class T1, class T2>
inline int chkmin(T1& a, const T2& val) {
  return val < a ? a = val, 1 : 0;
}
template <class T1, class T2>
inline int chkmax(T1& a, const T2& val) {
  return a < val ? a = val, 1 : 0;
}
template <class T>
inline T isqrt(T k) {
  T r = sqrt(k) + 1;
  while (r * r > k) r--;
  return r;
}
template <class T>
inline T icbrt(T k) {
  T r = cbrt(k) + 1;
  while (r * r * r > k) r--;
  return r;
}
inline void addmod(int& a, int val, int p = MOD) {
  if ((a = (a + val)) >= p) a -= p;
}
inline void submod(int& a, int val, int p = MOD) {
  if ((a = (a - val)) < 0) a += p;
}
inline int mult(int a, int b, int p = MOD) { return (long long)a * b % p; }
inline int inv(int a, int p = MOD) { return (int)fpow(a, p - 2, p); }
const int maxn = 1 << 20;
const int mod = 998244353;
void fft(int a[], int p, int r, int n) {
  for (int m = n, h; h = m / 2, m >= 2; r = (long long)r * r % p, m = h) {
    for (int i = 0, w = 1; i < h; i++, w = (long long)w * r % p) {
      for (int j = i; j < n; j += m) {
        int k = j + h, x = a[j] - a[k];
        if (x < 0) x += p;
        a[j] += a[k];
        if (a[j] >= p) a[j] -= p;
        a[k] = (long long)w * x % p;
      }
    }
  }
  for (int i = 0, j = 1; j < n - 1; j++) {
    for (int k = n / 2; k > (i ^= k); k /= 2)
      ;
    if (j < i) swap(a[i], a[j]);
  }
}
int n, k;
int c[maxn];
int fa[maxn];
int fb[maxn];
void multiply(vector<int>& a, vector<int>& b, int c[], int p) {
  int na = int((a).size()), nb = int((b).size());
  int n = 1, d = p - 1;
  while (n <= na + nb) n <<= 1, d >>= 1;
  fill_n(fa, n, 0), fill_n(fb, n, 0);
  for (int i = (0); i < (na); i++) fa[i] = a[i];
  for (int i = (0); i < (nb); i++) fb[i] = b[i];
  int w1 = fpow(3, d, p);
  int w2 = inv(w1, p);
  fft(fa, p, w1, n);
  fft(fb, p, w1, n);
  for (int i = (0); i < (n); i++) fa[i] = mult(fa[i], fb[i], p);
  fft(fa, p, w2, n);
  int rem = inv(n, p);
  for (int i = (0); i < (n); i++) c[i] = mult(fa[i], rem, p);
}
struct Num {
  vector<int> a, b;
  Num() {}
  Num(vector<int> a, vector<int> b) : a(a), b(b) {}
  Num(const Num& rhs) : a(rhs.a), b(rhs.b) {}
};
Num merge(Num& x, Num& y) {
  Num res;
  int ka = max(int((x.a).size()) + int((y.a).size()) - 1,
               int((x.b).size()) + int((y.b).size()) + 1);
  ka = min(ka, k + 1);
  int kb = max(int((x.a).size()) + int((y.b).size()) - 1,
               int((x.b).size()) + int((y.a).size()) - 1);
  kb = min(kb, k + 1);
  res.a.resize(ka, 0);
  res.b.resize(kb, 0);
  multiply(x.a, y.a, c, mod);
  for (int i = (0); i < (ka); i++) addmod(res.a[i], c[i], mod);
  multiply(x.b, y.b, c, mod);
  static int cof[] = {1, 6, 1};
  for (int i = (0); i < (ka); i++)
    for (int j = (0); j < (3); j++) {
      if (i + j < ka) {
        addmod(res.a[i + j], mult(c[i], cof[j], mod), mod);
      }
    }
  multiply(x.a, y.b, c, mod);
  for (int i = (0); i < (kb); i++) {
    addmod(res.b[i], c[i], mod);
  }
  multiply(x.b, y.a, c, mod);
  for (int i = (0); i < (kb); i++) {
    addmod(res.b[i], c[i], mod);
  }
  return res;
}
Num pow(Num x, int k) {
  Num res = x, tmp = x;
  k--;
  while (k) {
    if (k & 1) res = merge(res, tmp);
    tmp = merge(tmp, tmp);
    k >>= 1;
  }
  return res;
}
void solve() {
  cin >> n >> k;
  vector<int> a, b;
  a.push_back(1), a.push_back(1), b.push_back(1);
  Num res = pow(Num(a, b), n + 1);
  while (int((res.b).size()) < k + 1) res.b.push_back(0);
  for (int i = (1); i < (k + 1); i++)
    cout << mult(res.b[i], fpow(inv(2, mod), n, mod), mod) << " \n"[i == k];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  if (fopen("in.txt", "r")) {
    freopen("in.txt", "r", stdin);
  }
  solve();
  cerr << "\nTime elapsed: " << 1000.0 * clock() / CLOCKS_PER_SEC << " ms\n";
  return 0;
}
