/*
I have used four cases
- start and end at even place
- start and end at odd place
- start at odd and end at even place
- else
used the grouping concept
/
#include<bits/stdc++.h>
using namespace std;
#define c 1000000007
unsigned long long int fct(unsigned long long int x)
{
unsigned long long f = 1;
for (int j=1;j<=x;j++)
f = (fj)%c;
return f;
}
int main()
{
unsigned long long int T=0,N=0,i=0,j=0,mn=0,mx=0,k=0,s=1,srt=0,end=0;
cin>>T;
for(i=0;i<T;i++)
{
cin>>N;
unsigned long long int arr=new unsigned long long int[N];
unsigned long long int cnt=new unsigned long long int[N];
for(j=0;j<N;j++)
cnt[j]=1;
for(j=0;j<N;j++)
cin>>arr[j];
sort(arr,arr+N);
mx=arr[N-1];
mn=arr[0];
k=0;
for(j=1;j<N;j++)
{
if(mn==arr[j])
{
cnt[k]+=1;;
}
else
{
mn=arr[j];
k++;
}
}
/
for(j=0;j<N;j++)
cout<<cnt[j]<<" ";
/
s=1;
k=0;
j=0;
while(j<N)
{
srt=j;
end=j+cnt[k]-1;
j=end+1;
if(cnt[k]==2)
{
if(srt%2==1 && end%2==0)
s=((s%c)2)%c;
}
if(cnt[k]>2)
{
if(srt%2==0 && end%2==0)
{
s=(((s%c)(cnt[k]%c))%c(fct(cnt[k]-1)%c))%c;
s=s/pow(2,cnt[k]/2);
s=s/fct(cnt[k]/2);
}
else if(srt%2==1 && end%2==1)
{
s=(((s%c)(cnt[k]%c))%c*(fct(cnt[k]-1)%c))%c;
s=s/pow(2,cnt[k]/2);
s=s/fct(cnt[k]/2);
}
else if(srt%2==1 && end%2==0)
{
s=((((s%c)((cnt[k]/2)%c))%c)((cnt[k]-1)%c))%c;
s=((s%c)(fct(cnt[k]-2)%c))%c;
s=s/pow(2,(cnt[k]-2)/2);
s=s/fct((cnt[k]-2)/2);
}
else//(srt%2==0 && end%2==1)
{
s=((s%c)(fct(cnt[k])%c))%c;
s=s/pow(2,cnt[k]/2);
s=s/fct(cnt[k]/2);
}
}
k=k+1;
}
cout<<s<<endl;
}
return(0);
}