const int maxn = 1e4+5; const ll mod=1e9+6; struct mat { ll m[maxn][maxn]; }unit; void init() //初始化 { for(int i=1;i<maxn;i++) { unit.m[i][i]=1; } } mat matmul(mat a,mat b) //定义矩阵的乘法 { mat ans; ll tmp =0; for(int i=1;i<maxn;i++) { for(int j=1;j<maxn;j++) { tmp=0; for(int k=1;k<maxn;k++) { tmp=(tmp + a.m[i][k] * b.m[k][j])%mod; } ans.m[i][j]=tmp; } } return ans; }