#include using namespace std; const int MAX_N=5+2e5,MOD=1e9+7; int a[MAX_N],b[MAX_N],top; int fac[MAX_N],inv[MAX_N],fac_inv[MAX_N]; void init(int n){ fac[0]=fac_inv[0]=inv[1]=1; for(int i=1;i<=n;++i){ fac[i]=1ll*fac[i-1]*i%MOD; if(i>1)inv[i]=1ll*(MOD-MOD/i)*inv[MOD%i]%MOD; fac_inv[i]=1ll*fac_inv[i-1]*inv[i]%MOD; } } int c(int n,int m){ return 1ll*fac[n]*fac_inv[m]%MOD*fac_inv[n-m]%MOD; } int main(){ // freopen("1.in","r",stdin); // freopen("1.out","w",stdout); init(2e5); int T; scanf("%d",&T); while(T--){ top=0; int n; scanf("%d",&n); for(int i=1;i<=n+n;++i) scanf("%d",&a[i]); sort(a+1,a+n+n+1); a[n+n+1]=-100; int last=0; for(int i=1;i<=n+n;++i) if(a[i]!=a[i+1]) b[++top]=i-last,last=i; int ans=1,sum=0; for(int i=1;i<=top;++i){ if(sum&1){ if(b[i]&1) ans=2ll*ans*c(b[i],b[i]>>1)%MOD; else ans=1ll*ans*(c(b[i],b[i]>>1)+c(b[i],(b[i]>>1)+1))%MOD; }else{ ans=1ll*ans*c(b[i],b[i]>>1)%MOD; } sum+=b[i]; // printf("(%d)",ans); } printf("%d\n",ans); } return 0; }