这题运用递推公式
#include <bits/stdc++.h>
#define Mod 1000000007
using namespace std;
typedef long long ll;
ll ans[20000100];
int T, N;
int main() {
ans[1] = 500000004;
ll tmp1 = 1, tmp2 = ans[1];
for (int i = 2; i <= 20000000; i++) {
tmp1 = (2 * tmp1 + 1) % Mod;
tmp2 = tmp2 * ans[1] % Mod;
ans[i] = ans[i - 1] * tmp1 % Mod * tmp2 % Mod;
}
for (int i = 2; i <= 20000000; i++)
ans[i] = ans[i] ^ ans[i - 1];
scanf("%d", &T);
while (T--) {
scanf("%d", &N);
printf("%lld\n", ans[N]);
}
}