//...START BY DOING WHAT IS NECESSARY, THEN WHAT IS POSSIBLE AND SUDDENLY YOU ARE DOING THE IMPOSSIBLE...
#include <bits/stdc++.h>
using namespace std;
#define FAST_FURIER ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define pb push_back
#define rep(i,a,N) for(ll i=a;i<N;i++)
typedef long long ll;
#define endl '\n'
#define M 1000000007
bool comp(int x,int y)
{
return x > y;
}
/*..............................code starts here........................*/
// S is the courage to continue that counts.
ll fac[1000002];
ll power(ll no,ll p)
{
if(p == 1)
return no;
if(p == 0)
return 1;
ll q = power(no,p/2);
q = (q*q)%M;
if(p % 2 != 0)
q = (q*no)%M;
return q;
}
void factorial(){
fac[0] = 1;
rep(i,1,1000001)
fac[i] = (fac[i-1]*i)%M;
}
ll calculate(ll x){
ll no = power(fac[x/2],M-2)%M;
no = (no*no)%M;
return (fac[x]*no)%M;
}
int main() {
FAST_FURIER;
factorial();
int t=1;
cin >> t;
ll m,n,k;
string a,b;
while(t--)
{
cin >> n;
int count = 0;
int input;
int mx = INT_MIN;
rep(i,0,n){
cin >> input;
if(input > mx){
mx = input;
count = 1;
}
else if(input == mx){
count += 1;
}
}
// cout << it->first << " " << it->second << endl;
//cout << mp[mx] << endl;
if(count % 2 == 1)
cout << power(2,n) << endl;
else{
ll no = ((power(2,n-count)*calculate(count)%M+M))%M;
cout << (power(2,n) - no)%M << endl;
}
}
}
// Author : Shivam_123 (cf) shihack(chef)
// g++ -std=c++17
Ly8uLi5TVEFSVCBCWSBET0lORyBXSEFUIElTIE5FQ0VTU0FSWSwgVEhFTiBXSEFUIElTIFBPU1NJQkxFIEFORCBTVURERU5MWSBZT1UgQVJFIERPSU5HIFRIRSBJTVBPU1NJQkxFLi4uIAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBGQVNUX0ZVUklFUiBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcmVwKGksYSxOKSBmb3IobGwgaT1hO2k8TjtpKyspCnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIE0gMTAwMDAwMDAwNwpib29sIGNvbXAoaW50IHgsaW50IHkpCnsKICAgIHJldHVybiB4ID4geTsgICAKfQoKCi8qLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uY29kZSBzdGFydHMgaGVyZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiovCi8vIFMgaXMgdGhlIGNvdXJhZ2UgdG8gY29udGludWUgdGhhdCBjb3VudHMuCmxsIGZhY1sxMDAwMDAyXTsKbGwgcG93ZXIobGwgbm8sbGwgcCkKewogICAgaWYocCA9PSAxKQogICAgcmV0dXJuIG5vOwogICAgaWYocCA9PSAwKQogICAgcmV0dXJuIDE7CiAgICBsbCBxID0gcG93ZXIobm8scC8yKTsKICAgIHEgPSAocSpxKSVNOwogICAgaWYocCAlIDIgIT0gMCkKICAgIHEgPSAocSpubyklTTsKICAgIHJldHVybiBxOwp9CnZvaWQgZmFjdG9yaWFsKCl7CiAgICBmYWNbMF0gPSAxOwogICAgcmVwKGksMSwxMDAwMDAxKQogICAgZmFjW2ldID0gKGZhY1tpLTFdKmkpJU07Cn0KbGwgY2FsY3VsYXRlKGxsIHgpewogICAgbGwgbm8gPSBwb3dlcihmYWNbeC8yXSxNLTIpJU07CiAgICBubyA9IChubypubyklTTsKICAgIHJldHVybiAoZmFjW3hdKm5vKSVNOwp9CmludCBtYWluKCkgewogICAgRkFTVF9GVVJJRVI7CiAgICBmYWN0b3JpYWwoKTsKICAgIGludCB0PTE7CiAgICBjaW4gPj4gdDsKICAgIGxsIG0sbixrOwogICAgc3RyaW5nIGEsYjsKICAgIHdoaWxlKHQtLSkgIAogICAgewogICAgICAgIGNpbiA+PiBuOwogICAgICAgIGludCBjb3VudCA9IDA7CiAgICAgICAgaW50IGlucHV0OwogICAgICAgIGludCBteCA9IElOVF9NSU47CiAgICAgICAgcmVwKGksMCxuKXsKICAgICAgICAgICAgY2luID4+IGlucHV0OwogICAgICAgICAgICBpZihpbnB1dCA+IG14KXsKICAgICAgICAgICAgICAgIG14ID0gaW5wdXQ7CiAgICAgICAgICAgICAgICBjb3VudCA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihpbnB1dCA9PSBteCl7CiAgICAgICAgICAgICAgICBjb3VudCArPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgLy8gY291dCA8PCBpdC0+Zmlyc3QgPDwgIiAiIDw8IGl0LT5zZWNvbmQgPDwgZW5kbDsKICAgICAgIC8vY291dCA8PCBtcFtteF0gPDwgZW5kbDsKICAgICAgICBpZihjb3VudCAlIDIgPT0gMSkKICAgICAgICBjb3V0IDw8IHBvd2VyKDIsbikgPDwgZW5kbDsKICAgICAgICBlbHNlewogICAgICAgICAgICBsbCBubyA9ICgocG93ZXIoMixuLWNvdW50KSpjYWxjdWxhdGUoY291bnQpJU0rTSkpJU07CiAgICAgICAgICAgIGNvdXQgPDwgKHBvd2VyKDIsbikgLSBubyklTSA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KfQoKCgoKLy8gQXV0aG9yIDogU2hpdmFtXzEyMyAoY2YpIHNoaWhhY2soY2hlZikgCgovLyBnKysgLXN0ZD1jKysxNw==