#include #include using namespace std; using ll = long long; #define rep(i,n) for(int i=0;i<(int)(n);i++) using mint = atcoder::modint998244353; const int MOD=998244353; const int MAX_N=2e6; vector fac(MAX_N+1,1); vector finv(MAX_N+1,1); vector inv(MAX_N+1,1); void comb_setup(){ for(int i=2;i<=MAX_N;i++){ fac.at(i)=(fac.at(i-1)*i)%MOD; inv.at(i)=MOD-(inv.at(MOD%i)*(MOD/i))%MOD; finv.at(i)=(finv.at(i-1)*inv.at(i))%MOD; } } mint comb(int n,int k){ if(n> mm(5000,vector(5000,-1)); mint dv(int l,int r){ if(l==0&&r==0) return 1; if(l==0||r==0) return 0; if(mm.at(l).at(r)!=-1) return mm.at(l).at(r); mint rt=0; rt+=dv(l-1,r-1)*((l-1)*(r-1)+1); if(l>2) rt+=dv(l-2,r)*comb(l-1,2); if(r>2) rt+=dv(l,r-2)*comb(r-1,2); return mm.at(l).at(r)=rt; } int main(){ comb_setup(); int n; cin>>n; rep(i,2*n+1){ cout<