#include <bits/stdc++.h>
using namespace std;

const int N = 4005;
const long long mod = 998244353;

long long C[N][N];
long long pow2[N];

void init(){
	C[0][0] = C[1][0] = C[1][1] = 1;
	for (int i = 2; i <= 4000; i++){
		C[i][0] = 1;
		for (int j = 1; j < i; j++) C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % mod;
		C[i][i] = 1;
	}
	pow2[0] = 1;
	for (int i = 1; i <= 4000; i++) pow2[i] = pow2[i - 1] * 2 % mod;
}

int main(){
	init();
	int n, k, num1, num2, num3;
	long long ans;
	scanf("%d %d",&k,&n);
	for (int i = 2; i <= k * 2; i++){
		ans = 0;
		num1 = (min(i - 1, k) - max(i - k, 1) + 1) / 2;
		num2 = 1 - i & 1;
		num3 = k - num1 * 2 - num2;
		for (int p = 0; p <= num2; p++){
			for (int j = 0; j <= num1; j++){
				ans += C[num1][j] * pow2[j] % mod * C[n - 1 - p + num3][j + num3 - 1] % mod;
				ans %= mod;
			}
		}
		printf("%I64d\n", ans);
	}
	return 0;
}
#include <bits/stdc++.h>
typedef long long ll;

const int N=5005,P=998244353;
int n,k,C[N][N];

inline int Cs(int n,int m){return n<0||m<0||n<m?0:C[n][m];}

int main()
{
	scanf("%d%d",&k,&n);
	for(int i=C[0][0]=1;i<=5001;++i)
		for(int j=C[i][0]=1;j<=i;++j)
			if((C[i][j]=C[i-1][j]+C[i-1][j-1])>=P)
				C[i][j]-=P;
	for(int i=2,j,u,v,s;i<=k<<1;printf("%d\n",s),++i)
		for(u=std::min(k,i>>1),v=std::max(1,i-k),s=j=0;j<=u-v+1;++j)
			s=(s+(ll)Cs(u-v+1,j)*Cs(n+k-j-j-1,n-j-j)%P*(j&1?P-1:1))%P;
	return 0;
}
