// Slower C++ solution:
#include<cstdio>

#include<cstdlib>

#define min(a,b) (a<b?a:b)

const int clz=998244353;

#define mod clz

long long matm(long long val,long long k){

	long long ret=1;

	while(k){

		if(k&1) ret=ret*val%mod;

		k>>=1; val=val*val%mod;

	}

	return ret;

}

int n,k;

long long pw[100005],pu[100005],inv[100005];

inline long long C(int n,int m){if(m<0||m>n) return 0;return (pu[n]*inv[m]%mod)*inv[n-m]%mod;}

long long getans(int val){

	if(val&1){

		long long ans=0;

		int gro=min(k-val/2,val/2);

		int p=k-gro*2;

		//if(p==0) exit(0);

		for(int i=(p==0)?1:0;i<=gro;i++) {ans+=(C(n+p-1,i+p-1)*pw[i]%mod)*C(gro,i)%mod; ans%=mod;}

		return ans;

	}

	else{

		long long ans=0;

		int gro=min(k-val/2+1,val/2);

		int p=k-gro*2+1;

		//if(p==0) exit(0);

		for(int i=(p==0)?1:0;i<gro;i++) {ans+=(C(n+p-1,i+p-1)*pw[i]%mod)*C(gro-1,i)%mod; ans%=mod;}

		for(int i=(p==0)?1:0;i<gro;i++) {ans+=(C(n+p-2,i+p-1)*pw[i]%mod)*C(gro-1,i)%mod; ans%=mod;}

		return ans;

	}

}

int main(){

	pu[0]=pw[0]=1;

	for(int i=1;i<=100000;i++) pu[i]=pu[i-1]*i%mod;

	for(int i=1;i<=100000;i++) pw[i]=pw[i-1]*2%mod;

	inv[100000]=matm(pu[100000],mod-2);

	for(int i=99999;i>=0;i--) inv[i]=inv[i+1]*(i+1)%mod;

	scanf("%d%d",&k,&n);

	for(int i=2;i<=2*k;i++) printf("%lld\n",getans(i));

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 2.154929213617044x):
#include<bits/stdc++.h>

using namespace std;

#define y1 A2Dalek

#define y0 Cyberman

#define yn RoseTyler

#define j1 JackHarkness

#define fs first

#define sd second

const int N=6000;

const int oo=1e9+5;

int du[]={-1,0,0,1};

int dv[]={0,-1,1,0};

const long long mod=998244353;

typedef pair<int,int> ii;

typedef pair<int,ii> iii;

long long sqr(long long x) {return x*x;}

int getbit(int state, int i) {return ((state>>i)&1);}



long long Pow2[N+5],tu[N+5],mau[N+5],ans[N+5];

long long Pow(long long x, long long y)

{

    if (y==0) return 1;

    long long tmp=Pow(x,y/2);

    tmp=tmp*tmp%mod;

    if (y%2) return tmp*x%mod;

    return tmp;

}

long long C(int n, int k)

{

    if (k>n) return 0;

    return tu[n]*mau[k]%mod*mau[n-k]%mod;

}

void khoitao()

{

    Pow2[0]=1;

    for (int i=1;i<=N;i++) Pow2[i]=Pow2[i-1]*2%mod;

    tu[0]=1;

    for (int i=1;i<=N;i++) tu[i]=tu[i-1]*i%mod;

    mau[N]=Pow(tu[N],mod-2);

    for (int i=N-1;i>=0;i--) mau[i]=mau[i+1]*(i+1)%mod;

}

int n,k;

int dem(int val)

{

    int tmp=0;

    for (int i=1;i<=k;i++) if (val-i<=k && i<val-i) tmp++;

    return tmp;

}

int main()

{

	//freopen("Stop. Otherwise....inp","r",stdin);

	//freopen("Stop. Otherwise....out","w",stdout);

	ios_base::sync_with_stdio(false);

	khoitao();

    cin>>k>>n;

    for (int val=3;val<=2*k-1;val+=2)

    {

        int g=dem(val);

        for (int num=0;num<=g;num++) ans[val]=(ans[val] + C(n+k-2*g-1,k-2*g+num-1)*C(g,num)%mod*Pow2[num]%mod)%mod;

    }

    for (int val=2;val<=2*k;val+=2)

    {

        int g=dem(val);

        for (int num=0;num<=g;num++)

        {

            ans[val]=(ans[val] + C(n+k-2*g-1-1,k-2*g-1+num-1)*C(g,num)%mod*Pow2[num]%mod)%mod;

            ans[val]=(ans[val] + C(n-1+k-2*g-1-1,k-2*g-1+num-1)*C(g,num)%mod*Pow2[num]%mod)%mod;

        }

    }

    for (int i=2;i<=2*k;i++) cout<<ans[i]<<endl;

	return 0;

}