40分求助qwq
#include<iostream>
#include<cstring>
#include<cstdio>
#define LL long long
using namespace std;
const long long N=105;
const long long MD=19260817;
struct Matrix{
long long a[N][N];
};
Matrix A,B;
long long n,p;
Matrix operator *(Matrix A,Matrix B){
Matrix C;
memset(C.a,0,sizeof(C.a));
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
for(int k=1;k<=3;k++){
C.a[i][j]=C.a[i][j]+A.a[i][k]*B.a[k][j];
}
}
}
return C;
}
Matrix Fast(Matrix A,long long n){
Matrix S=A;
n--;
while(n){
if(n&1){
S=S*A;
}
A=A*A;
n=n>>1;
}
return S;
}
int main(){
long long t;
cin>>t;
while(t--){
cin>>n;
if(n<=1){
cout<<2<<endl;
continue;
}
A.a[1][1]=A.a[2][1]=A.a[3][1]=A.a[1][2]=A.a[2][3]=1;
Matrix S=Fast(A,n-1);
Matrix R;
R.a[1][1]=1;
R.a[1][2]=1;
R.a[1][3]=0;
R=R*S;
cout<<(R.a[1][1]+R.a[1][2]+R.a[1][3])%MD<<endl;
}
return 0;
}