输入格式
第一行一个整数 T,表示有 T 组数据。
接下来输入 T 组数据,每组数据包含两行:第一行一个整数 N,表示数组 A 的长度;第二行输入 N 个整数从左至右依次为 A0,A1,······,AN-1 ,相邻元素之间用空格分隔。
输出格式
对于每组数据,输出一行,包含一个整数表示答案,答案可能会很大,你需要将答案对
1000000007 进行取模后输出。
样例输入
2 2 6 6 2 1 6
样例输出
4 0
样例说明
对于第一组数据,答案为 4。(注意:大括号内的数字表示元素在数组中的下标。)
对于第二组数据,无论怎么选择,都不满足条件,所以答案为 0。
//当有奇数个奇数时,无论怎么分配,两边的和一定有一边为奇数,所以直接输出0。
//当有偶数个奇数时,总方案为2**(偶数个数)*2**(奇数个数-1)
//注意:当有0个奇数时,将其赋值为1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int mod=1000000007;
Scanner scan = new Scanner(System.in);
int t=scan.nextInt();
while(t>0){
t--;
int n=scan.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=scan.nextInt();
}
int ou=0,ji=0;
for(int i=0;i<n;i++){
if(a[i]%2==0){
ou++;
}
else{
ji++;
}
}
if(ji%2!=0){
System.out.println(0);
}
else{
if(ji==0){
ji=1;
}
System.out.println((int)(Math.pow(2,ou)*Math.pow(2,(ji-1))%mod));
}
}
scan.close();
}
}