#include #define N 100005 #define mod 1000000007 using namespace std; int n; int a[N<<1],cnt[N<<1]; long long fac[N<<1],infac[N<<1]; inline void Rd(int &res){ char c;res=0; while(c=getchar(),c<48); do res=(res<<3)+(res<<1)+(c^48); while(c=getchar(),c>47); return; } inline long long C(int a,int b){ return fac[b]*infac[a]%mod*infac[b-a]%mod; } void init(){ for(int i=1;i<=n*2;i++)cnt[i]=0; } int main(){ int T; Rd(T); fac[0]=infac[0]=infac[1]=1; for(int i=1;i<=200000;i++)fac[i]=fac[i-1]*i%mod; for(int i=2;i<=200000;i++)infac[i]=mod-mod/i*infac[mod%i]%mod; for(int i=2;i<=200000;i++)infac[i]=infac[i]*infac[i-1]%mod; while(T--){ Rd(n); init(); for(int i=1;i<=n*2;i++)Rd(a[i]),cnt[a[i]]++; int last=0; long long ans=1; for(int i=1;i<=n*2;i++)if(cnt[i]){ if(last&1){ if(cnt[i]&1)ans=ans*C(cnt[i]/2,cnt[i])%mod; else ans=ans*(C(cnt[i]/2,cnt[i])+C(cnt[i]/2-1,cnt[i]))%mod; } else{ if(cnt[i]&1)ans=ans*(C(cnt[i]/2,cnt[i])+C(cnt[i]/2+1,cnt[i]))%mod; else ans=ans*C(cnt[i]/2,cnt[i])%mod; } last+=cnt[i]; } printf("%lld\n",ans); } return 0; }