因为连续三天不能去同一家外卖; 那么,设三家外卖的序号为0,1,2;

假设第i天去了第j家,则:

1:第i-1天没去第J家,那就不会三天吃同一家,也就是第i-1天 可以去另外两家;

2:第i-1天去了第J家,那么因为三天不能吃同一家,那第i-2天就只能去另外两面;

以第i天去了第0家为例:

dp[i][0]+=(dp[i-1][1]+dp[i-1][2])%mod;第i-1天不去第0家;

dp[i][0]+=(dp[i-2][1]+dp[i-2][2])%mod;第i-1天去了第0家;

using namespace std;
const int N=1e6+5,mod=1e9+7;
#define ll long long 
ll dp[N][5];
int main()
{
    int i,j;
	dp[1][0]=1,dp[1][1]=1,dp[1][2]=1;
    dp[2][0]=3,dp[2][1]=3,dp[2][2]=3;
//dp[i][j]第i天去第j家;
    for(i=3;i<=1e5+5;i++){
        dp[i][0]=(dp[i-1][1]+dp[i-1][2]+dp[i-2][1]+dp[i-2][2])%mod;
        dp[i][1]=(dp[i-1][0]+dp[i-1][2]+dp[i-2][0]+dp[i-2][2])%mod;
        dp[i][2]=(dp[i-1][0]+dp[i-1][1]+dp[i-2][0]+dp[i-2][1])%mod;
    }
    int t;cin>>t;
    while(t--){
        int n;scanf("%d",&n);
        int ans=(dp[n][0]+dp[n][1]+dp[n][2])%mod;
        printf("%lld\n",ans);
    }
    return 0;
}