#define  REP(i, s, e) for (int i = s; i <= e; i++)
#define DREP(i, s, e) for (int i = s; i >= e; i--)
#define DEBUG fprintf(stderr, "Passing [%s] in Line %d\n", __FUNCTION__, __LINE__)

#define chkmax(a, b) a = max(a, b)
#define chkmin(a, b) a = min(a, b)

#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 4000 + 10, MOD = 998244353;

int n, k, tot[maxn];
long long fac[maxn], Inv[maxn];
inline int C(int n, int m) {return fac[n] * Inv[m] % MOD * Inv[n-m] % MOD;}

int power_pow(long long base, int b)
{
	long long ans(1);
	while (b)
	{
		if (b & 1) (ans *= base) %= MOD;
		(base *= base) %= MOD;
		b >>= 1;
	}
	return ans;
}
#define inv(x) power_pow(x, MOD - 2)
inline void init()
{
	fac[0] = 1;
	REP(i, 1, 4000) fac[i] = fac[i-1] * i % MOD;
	Inv[4000] = inv(fac[4000]);
	DREP(i, 3999, 0) Inv[i] = Inv[i+1] * (i+1) % MOD;
}

int main()
{
#ifdef CraZYali
	freopen("C.in", "r", stdin);
	freopen("C.out", "w", stdout);
#endif
	init();
	cin >> k >> n;
	REP(i, 1, k) tot[i+1]++, tot[i+k+1]--;
	REP(i, 1, k + k) tot[i] += tot[i-1];
	REP(i, 2, k + k)
    {
		int cnt = tot[i] + 1 >> 1, ans(0);
		const int lim = min(cnt, n >> 1);
		REP(j, 0, lim)
			(ans += (j & 1 ? -1ll : 1ll) * C(cnt, j) * C(n-j-j+k-1, k-1) % MOD) %= MOD;
        printf("%d\n", (ans + MOD) % MOD);
    }
    return 0;
}

#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
#define chmin(a,b) a=min(a,b)
#define chmax(a,b) a=max(a,b)
#define mod 998244353
#define mad(a,b) a=(a+b)%mod;
#define mul(a,b) a=a*b%mod;
#define N 100010
ll fac[N],inv[N],ivf[N];
ll C(ll n,ll k){
    if(n<k)return 0;
  if(n<0||k<0)return 0;
    return fac[n]*ivf[n-k]%mod*ivf[k]%mod;
}
ll H(ll n,ll k){
    //if(k==0)return 1;
    return C(n+k-1,k);
}
ll P(ll n,ll k){
    return fac[n]*ivf[n-k]%mod;
}
ll po(ll x,ll y){
    ll res=1;
    for(;y;y>>=1){
	if(y&1)res=res*x%mod;
	x=x*x%mod;
    }
    return res;
}
ll solve(ll a,ll b,ll n){
    ll res=0;
    for(ll p=0;p<=b;p++){
	ll cur=C(b,p)*po(2,p)%mod;
	mul(cur,H(a+p,n-p));
	mad(res,cur);
    }
  //cout<<"#"<<a<<" "<<b<<" "<<n<<" "<<res<<endl;
    return res;
}
int main(){
    fac[0]=ivf[0]=inv[1]=1;
    for(int i=1;i<N;i++){
	if(i>1)inv[i]=(mod-mod/i*inv[mod%i]%mod)%mod;
	fac[i]=fac[i-1]*i%mod;
	ivf[i]=ivf[i-1]*inv[i]%mod;
    }
  ll k,n; cin>>k>>n;
  for(ll i=2;i<=2*k;i++){
      ll a,b;
      a=abs(k-i+1);
      b=(k-a)/2;
      ll ans=solve(a,b,n);
      if(i%2==0){
	  mad(ans,solve(a,b,n-1));
      }
      if(ans<0)ans+=mod;
      cout<<ans<<endl;
  }
  return 0;
}

