#include #define int long long #define poly basic_string using namespace std; const int N=65,M=1e5+5,Mod=998244353,INV2=499122177; int n,p1,p2,p3,p4,p5,pw2[N],pw3[N],g,invg,w2,w3,ans,a[M],b[M],c[M]; poly P[N][N],Q[N][N],R[N][N],S[N],T[N],F[N],G[N],H[N],W0[N],W1[N],now={{1,0}}; int ksm(int x,int y) { int ret=1,bace=x; while(y) { if(y&1)ret=ret*bace%Mod; bace=bace*bace%Mod; y>>=1; } return ret; } namespace NTT { long long A[M],B[M]; int tr[M]; int init(int n) { int ret=1; while(ret>1]>>1)|((i&1)?(ret>>1):0); return ret; } void ntt(long long *f,int n,int op) { for(int i=0;i