
#include<iostream>
#define mod 1000000007
#define ll long long
using namespace std;
typedef struct
{
ll a[3][3];
void r()
{
for(int i=0;i<3;i++)
a[i][i]=1;
}
void init()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
a[i][j]=0;
}
}matrix;
matrix operator *(const matrix x,const matrix y)
{
matrix res;
res.init();
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<3;k++)
res.a[i][j]=(res.a[i][j]+x.a[i][k]*y.a[k][j]%mod)%mod;
}
}
return res;
}
matrix quickpow(matrix x,int n)
{
matrix res;
res.init();
res.r();
while(n>0)
{
if(n&1)
{
res=res*x;
}
x=x*x;
n>>=1;
}
return res;
}
int main()
{
matrix d;
for(int i=0;i<3;i++) d.a[0][i]=1;
matrix s;
int s0[3][3]={{1,1,1},{0,1,1},{1,1,2}};
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{s.a[i][j]=s0[i][j];}
ll t;
cin>>t;
ll q;
ll p=0;
ll *res=new ll[t];
for(int i=0;i<t;i++)
{
cin>>q;
q--;
p=q%3;
q/=3;
res[i]=((d*quickpow(s,q)).a[0][p])%mod;
}
for(int j=0;j<t;j++)
cout<<res[j]<<endl;
return 0;
}