#include <bits/stdc++.h>

using namespace std;
const int N = 4e3 + 5, MOD = 998244353;
int c[N][N], pw[N] = {1};

int mul() {return 1;}
template <typename Head, typename... Tail>
int mul(Head H, Tail... T) {return 1ll * mul(T...) * H % MOD;}
int sum() {return 0;}
template <typename Head, typename... Tail>
int sum(Head H, Tail... T) {return (mul(T...) + H) % MOD;}

int C(int n, int k) {
    if (k < 0 || n < 0 || n < k) return 0;
    return c[n][k];
}
int Solve(int n, int k, int m) {
    int r = k - m - m, res = 0;
    for (int i = 0; i <= m; i++) res = sum(res, mul(C(m, i), C(n + r - 1, n - i), pw[i]));
    return res;
}
int main() {
    c[0][0] = 1;
    for (int i = 1; i < N; i++)
        for (int j = 0; j <= i; j++) c[i][j] = sum(c[i - 1][j], c[i - 1][j - 1]);
    for (int i = 1; i < N; i++) pw[i] = mul(pw[i - 1], 2);
    int n, k; cin >> k >> n;
    for (int t = 2; t <= 2 * k; t++) {
        int m = 0;
        for (int i = 1; i <= k; i++) if (i <= t - i && t - i <= k) m++;
        if (t % 2 == 0) cout << sum(Solve(n, k - 1, m - 1), Solve(n - 1, k - 1, m - 1)) << "\n";
        else cout << Solve(n, k, m) << "\n";
    }

    return 0;
}

#include<cstdio>
#include<algorithm>
using std::max;
#define int long long
const int mod=998244353;
int K,n,_2[5010],C[5010][5010];
signed main(){
	scanf("%lld%lld",&K,&n);
	C[0][0]=1;
	for(int i=1;i<=5000;i++){
		C[i][0]=1;
		for(int j=1;j<=i;j++)
			C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
	}
	_2[0]=1;
	for(int i=1;i<=5000;i++)
		_2[i]=_2[i-1]*2%mod;
	for(int i=2;i<=2*K;i++)
		if(i&1){
			int y=abs(K-i+1),x=(K-y)/2,ans=0;
			for(int j=0;j<=x;j++)
				(ans+=C[x][j]*_2[j]%mod*C[n+y-1][j+y-1]%mod)%=mod;
			printf("%lld\n",ans);
		}
		else{
			int y=abs(K-i+1),x=(K-y)/2,ans=0;
			for(int j=0;j<=x;j++)
				(ans+=C[x][j]*_2[j]%mod*(C[n+y-1][j+y-1]+C[n+y-2][j+y-1])%mod)%=mod;
			printf("%lld\n",ans);
		}
}