#include<algorithm>
#include<iostream>
#include<string.h>
#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
#include<map>
#include<set>
using namespace std;
#define int long long
#define repu(i,u) for(int i=(h[u]);i;i=(ne[i]))
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define dwn(i,a,b) for(int i=(a);i>=(b);i--)
#define xx return
const int MOD=1e9+7;
int T;
int a[3],f[3][3];
void mul_k(int a1[3],int f1[3][3])
{
int C[3];
memset(C,0,sizeof C);
rep(j,0,2)
{
rep(k,0,2)
{
C[j]=(C[j]+a1[k]*f1[k][j])%MOD;
}
}
memcpy(a,C,sizeof C);
}
void mul_self(int f1[3][3])
{
int C[3][3];
memset(C,0,sizeof C);
rep(i,0,2)rep(j,0,2)rep(k,0,2)
{
C[i][j]=(C[i][j]+f1[i][k]*f1[k][j])%MOD;
}
memcpy(f,C,sizeof C);
}
void clear()
{
rep(i,0,2)rep(j,0,2)f[i][j]=0;
rep(i,0,3)a[i]=0;
a[0]=1,a[1]=1,a[2]=1;
f[0][0]=f[0][2]=f[1][0]=f[2][1]=1;
}
void solve()
{
int n;
cin>>n;
if(n<=3)
{
cout<<1<<endl;xx;
}
n-=3;
for(;n;n>>=1)
{
if(n&1)mul_k(a,f);
mul_self(f);
}
cout<<a[0]%MOD<<endl;
xx;
}
signed main()
{
//freopen("P1939_1.in","r",stdin);
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>T;
while(T--)clear(),solve();
xx 0;
}
请问一下这哪里出现了未定义行为,关O2就过了