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

typedef long long LL;
const LL Md=998244353;
const int MAXN=4111;
LL C[MAXN][MAXN], P[MAXN], ans[MAXN];
int n, k;

inline LL Solve(int x) {
    --x;
    if(x&1) {
        int cnt=x/2, oth=k-x;
        LL res=0;
        for(int i=0;i<=cnt && i<=n;++i) {
            res=(res+C[cnt][i]*C[n+oth-1][oth+i-1]%Md*P[i])%Md;
            if(i<n) res=(res+C[cnt][i]*C[n+oth-2][oth+i-1]%Md*P[i])%Md;
        }
        return res;
    } else {
        int cnt=x/2, oth=k-x;
        LL res=0;
        for(int i=0;i<=cnt && i<=n;++i) {
            res=(res+C[cnt][i]*C[n+oth-1][oth+i-1]%Md*P[i])%Md;
        }
        return res;
    }
}

int main() {
    scanf("%d%d", &k, &n);
    P[0]=1;
    C[0][0]=1;
    for(int i=1;i<=4000;++i) {
        P[i]=P[i-1]+P[i-1];
        if(P[i]>=Md) P[i]-=Md;
        C[i][0]=C[i][i]=1;
        for(int j=1;j<i;++j) {
            C[i][j]=C[i-1][j]+C[i-1][j-1];
            if(C[i][j]>=Md) C[i][j]-=Md;
        }
    }
    for(int i=2;i<=k+1;++i) {
        printf("%lld\n", ans[i]=Solve(i));
    }
    for(int i=k;i>=2;--i) {
        printf("%lld\n", ans[i]);
    }
    return 0;
}