对就是这样
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int INF = 0x3f3f3f3f;
const double pi=acos(-1),eps=1e-8;
const int maxn = 1<<17;
const int mod = 1e9+7;
const int N = 2e7+10;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int n,m,k;
LL POW(LL x,LL y)
{
LL ans=1;
while(y){
if(y&1)ans=ans*x%mod;
x=x*x%mod;
y>>=1;
}
return ans;
}
LL inv(LL x){
return POW(x,mod-2);
}
LL a[N];
void init(){
LL inv2=inv(2);
LL ans=0,res=1,sum=inv2;
for(int i=1;i<N;i++){
res=res*(1-sum+mod)%mod;
sum=sum*inv2%mod;
ans^=res;
a[i]=ans;
}
}
int main()
{
init();
int t;cin>>t;
while(t--){
int x;cin>>x;
cout<<a[x]<<endl;
}
system("pause");
return 0;
}