【模板】矩阵乘法快速幂
struct matrix{ int n,m,a[N][N]; void init(int x) { n=m=x; for(int j=1;j<=n;j++)//单位帧初始化 a[i][j]=(i==j); } }; matrix operator*(matrix x,matrix y) { matrix z; z.n=x.n;z.m=y.m; for(int i=1;i<=z.n;i++) for(int j=1;j<=z.m;j++) { long long ams=0; for(int k=1;k<=x.m;k++) ans+=(long long)x.a[i][k]*y.a[k][j]; z.a[i][j]=ans%mod; } } matrix operator^(matrix x,int y) { matrix z=x; z.init(x.n); while(y) { if(y&1) z=z*x; x=x*x;y>>=1; } }