#include #include using namespace std; const long long mod=1000000007; long long n; long long a[220000]; long long fact[220000],ifac[220000]; long long ans; long long poww(long long f,long long x){ long long s=1; while(x){ if(x%2)s=(s*f)%mod; f=(f*f)%mod;x=x/2; } return s; } long long C(long long a,long long b){ return fact[a]*ifac[b]%mod*ifac[a-b]%mod; } int main () { long long i,t,_t,tmp,cnt; scanf("%I64d",&t); fact[0]=1; for(i=1;i<=200000;i++){ fact[i]=(fact[i-1]*i)%mod; } ifac[200000]=poww(fact[200000],mod-2); for(i=199999;i>=0;i--)ifac[i]=(ifac[i+1]*(i+1))%mod; for(_t=1;_t<=t;_t++){ scanf("%I64d",&n); scanf("%I64d",&a[1]); ans=1; cnt=1;tmp=0; for(i=2;i<=n*2;i++){ scanf("%I64d",&a[i]); if(a[i]!=a[i-1]){ if(tmp==1){ if(i%2==0){ ans=(ans*(C(cnt,cnt/2)+C(cnt,cnt/2+1)))%mod; } else{ ans=(ans*C(cnt,cnt/2))%mod; } } else{ if(cnt%2) ans=(ans*(C(cnt,cnt/2)+C(cnt,cnt-cnt/2)))%mod; else ans=(ans*C(cnt,cnt/2))%mod; } if(i%2==0)tmp=1; else tmp=0; //printf("@@%lld %lld\n",i,ans); cnt=1; } else cnt++; } if(tmp==1){ if(i%2==0){ ans=(ans*(C(cnt,cnt/2)+C(cnt,cnt/2+1)))%mod; } else{ ans=(ans*C(cnt,cnt/2))%mod; } } else{ if(cnt%2) ans=(ans*(C(cnt,cnt/2)+C(cnt,cnt-cnt/2)))%mod; else ans=(ans*C(cnt,cnt/2))%mod; } printf("%I64d\n",ans); } return 0; }