/*
裸地矩阵乘法
矩阵很好想的
1 1 0
0 0 1
1 0 0
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#define mod 1000000007
#define ll long long
using namespace std;
int T,n;
ll f[4][4],a[4][4];
void mul(ll a[4][4],ll b[4][4])
{
ll c[4][4];
memset(c,0,sizeof(c));
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int k=1;k<=3;k++)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mod;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
a[i][j]=c[i][j];
}
int main()
{
scanf("%d",&T);
while(T--)
{
memset(f,0,sizeof(f));
memset(a,0,sizeof(a));
a[1][1]=1;a[1][2]=1;a[2][3]=1;a[3][1]=1;f[1][1]=1;f[1][2]=1;
scanf("%d",&n);
if(n<=3)
{
printf("1\n");
continue;
}
n-=2;
while(n)
{
if(n&1)mul(f,a);
mul(a,a);
n>>=1;
}
printf("%ld\n",f[1][1]);
}
return 0;
}