Problem Description
soda has a set S with n integers {1,2,…,n}. A set is called key set if the sum of integers in the set is an even number. He wants to know how many nonempty subsets of S are key set.
Input
There are multiple test cases. The first line of input contains an integer T (1≤T≤105), indicating the number of test cases. For each test case:
The first line contains an integer n (1≤n≤109), the number of integers in the set.
Output
For each test case, output the number of key sets modulo 1000000007.
Sample Input
4
1
2
3
4
Sample Output
0
1
3
7
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <queue>
#include <math.h>
#include <vector>
#include <map>
#include <set>
#include <cmath>
#include <algorithm>
#include <iostream>
typedef long long ll;
const int mod=1000000007;
ll mod_pow(ll a, ll b, ll mod)
{
if(b==0) return 1;
ll res=mod_pow(a*a%mod, b/2, mod);
if(b%2==1) res=res*a%mod;
return res;
}
int main()
{
ll s;
scanf("%d", &s);
while(s--)
{
ll n;
scanf("%d", &n);
if(n==1) printf("0\n");
else
printf("%d\n", mod_pow(2,n-1,mod)-1);
}
return 0;
}