#include #include #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #define maxn 110000 #define mod 10000007 #define LL __int64 struct matrix { LL mat[15][15]; matrix() { memset(mat,0,sizeof(mat)); } }; int a[11]; int n; matrix mul(matrix A,matrix B) { matrix C; int i,j,k; for(i=1; i<=n+2; i++) { for(j=1; j<=n+2; j++) { for(k=1; k<=n+2; k++) { C.mat[i][j]=(C.mat[i][j]+A.mat[i][k]*B.mat[k][j])%mod; } } } return C; } matrix powmul(matrix A,int k) { matrix B; for(int i=1;i<=n+2;i++)B.mat[i][i]=1; while(k>=1) { if(k&1)B=mul(B,A); A=mul(A,A); k=k/2; } return B; } void print(matrix A) { cout<<"matrix A"<