#include #include #include #include using namespace std; using namespace atcoder; using mint=modint998244353; mint f[999999], invf[999999], p2[999999], i2[999999]; void fac(int n){ f[0]=1; for(int i=1; i<=n; i++) f[i]=f[i-1]*i; invf[n]=f[n].inv(); for(int i=n-1; i>=0; i--) invf[i]=invf[i+1]*(i+1); p2[1]=2, i2[1]=mint(2).inv(), p2[0]=i2[0]=1; for(int i=2; i<=n; i++){ p2[i]=p2[i-1]*2; i2[i]=i2[i-1]*i2[1]; } } mint comb(int x, int y){ if(!(0<=y && y<=x)) return 0; return f[x]*invf[y]*invf[x-y]; } int main() { int n; cin>>n; fac(2*n); mint a[100010]; for(int i=0; i>a1; a[i]=a1; } vector s(n); s[0]=i2[1], s[n-1]=0; for(int i=1; i va(3*n); for(int i=0; i v2(n+1); const int d=3000; vector v0(2*d+1); for(int k=0; k<=d; k++) v0[2*k]=comb(d, k); for(int k=0; k<=n; k+=d){ for(int i=0; i+k<=n && i v3(n+1); for(int k=0; k<=n; k++) v3[k]=mint(n-3).pow(k)*invf[k]; v3=convolution(v3, v2); for(int k=0; k<=n; k++){ mint ans=v3[k]*f[k]*p2[2*(n-1)]*f[n-1]; printf("%d\n", ans.val()); } return 0; }