#include <iostream>
typedef long long ll;
using namespace std;

ll mod=998244353;
const int SIZE=5010;
ll fac[SIZE], finv[SIZE], inv[SIZE];
void COMinit(ll m){
    fac[0]=fac[1]=1;
    finv[0]=finv[1]=1;
    inv[1]=1;
    for (int i=2; i<SIZE; ++i){
        fac[i]=(fac[i-1]*i)%m;
        inv[i]=m-(inv[m%i]*(m/i))%m;
        finv[i]=(finv[i-1]*inv[i])%m;
    }
}
ll COM(int n, int k, ll m){
    if(n<k) return 0;
    if(n<0 || k<0) return 0;
    return (fac[n]*((finv[k]*finv[n-k])%m))%m;
}

ll ans[4010], beki2[2020];
ll solve(int n, int p, int q, int r){
	if(r==1) return (solve(n-1, p, q, 0)+solve(n, p, q, 0))%mod;
	ll res=0;
	for(int i=0; i<=p; ++i){
		ll now=COM(p, i, mod);
		(now *= beki2[i]) %= mod;
		(now *= COM(n+q-1, n-i, mod)) %= mod;
		(res += now) %= mod;
	}
	return res;
}

int main() {
	int N, K;
	cin >> K >> N;
	COMinit(mod);
	beki2[0]=1;
	for(int i=1; i<2020; ++i) beki2[i]=(beki2[i-1]*2)%mod;
	for(int i=2; i<=K*2; ++i){
		if(i>K+1) ans[i]=ans[K*2+2-i];
		else if(i%2==0){
			ans[i]=solve(N, i/2-1, K-i+1, 1);
		}else{
			ans[i]=solve(N, i/2, K-i+1, 0);
		}
		cout << ans[i] << endl;
	}
	return 0;
}