#include #include using namespace std; using namespace atcoder; using mint=modint998244353; //定数倍対策なし mint Bostan_Mori(long long N){ vector Q={1,-1,-1,-1,-1,-1,-1}; vector P={1,0,0,0,0,0}; int d=6; int z=16; mint iz=mint(z).inv(); while(N>0){ Q.resize(z); vector Q_minus=Q; for(int i=1;i<(int)(Q.size());i+=2){ Q_minus[i]*=-1; } internal::butterfly(Q_minus); for(int i=0;i struct matrix{ int H,W; T table[6][6]; matrix(int h,int w) : H(h),W(w){ for(int i=0;i=0;i--){ W+=Bostan_Mori(N*M+i)*(i-4); } for(;k--;){ int C; scanf("%d",&C); matrix P(6,6); matrix Q(6,1); for(int i=0;i<6;i++){ if(i==C){ continue; } if(C=0;i--){ if(i==C){ continue; } if(j==C){ continue; } if(i=0;i--){ if(P.table[i][0]==0){ continue; } if(i=0;i--){ ans+=R[i]*(i-4); } ans=W-ans; printf("%d\n",ans.val()); } }