#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;   }