#include using namespace std; using ll=long long; #include using namespace atcoder; using mint=modint998244353; vector> Householder_trans(vector> A){ int n=A.size(); vector dc(n); for(int h=1;h sp(n,iv); for(int i=h+1;i Char_poly(vector> A){ int n=A.size(); if(n==0)return {1}; A=Householder_trans(A); for(int h=0;h> F(n+1,vector(n+1,0)); F[0][0]=1; for(int i=0;i> diag(vector> &A){ int n=A.size(); vector> E(n,vector(n,0)); for(int i=0;i> A){ int n=A.size(); mint res=1; for(int i=0;i> mul(vector> A,vector>B){ int n=A.size(); vector> C(n,vector(n,0)); for(int i=0;i det_M1_xM2(vector> M1,vector>M2){ int n=M1.size(); vector res(n+1,0); for(int k=0;k<10;k++){ ll a=rand()%ll(100000);//mod 以下 if(k==0)a=0; vector> M3(n,vector(n)); for(int i=0;i pa(n+1,1); for(int i=1;i<=n;i++)pa[i]=pa[i-1]*(-a); for(int i=0;i<=n;i++){ for(int k=0;k<=i;k++){ res[i-k]+=pol[i]*binom[i][k]*pa[k]; } } return res; } } return res; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); init(); int n; cin>>n; vector> A(n,vector(n)); auto B=A; for(int i=0;i>a; A[i][j]=a; } for(int i=0;i>a; B[i][j]=a; } auto AN=det_M1_xM2(A,B); for(int i=0;i<=n;i++)cout<