#include #define last last2 #define MOD 1000000007 using namespace std; typedef long long ll; inline void update(ll &x,ll y) { x=(x+y)%MOD; } ll pow_mod(ll x,int k) { ll ans=1; while (k) { if (k&1) ans=ans*x%MOD; x=x*x%MOD; k>>=1; } return ans; } ll facd[200005],facv[200005]; void pre(int n) { facd[0]=1; for(int i=1;i<=n;i++) facd[i]=facd[i-1]*i%MOD; facv[n]=pow_mod(facd[n],MOD-2); for(int i=n-1;i>=0;i--) facv[i]=facv[i+1]*(i+1)%MOD; } inline ll C(int n,int m) { return (n>1); for(int i=l-1;i<=r;i++) memset(f[i],0,sizeof(f[i])); f[l-1][1]=1; for(int i=l;i<=r;i++) for(int j=0;j<3;j++) if (f[i-1][j]) { for(int k=((b[i]+1)>>1)-1;k<=(b[i]>>1)+1;k++) { int s=2*k-b[i]; if (j+s>=0&&j+s<=2) update(f[i][j+s],f[i-1][j]*C(b[i],k)); } } return f[r][1]; } int solve(int n) { int s=0,cnt=0; for(int i=1;i<=n;i++) { s++; if (i==n||a[i]!=a[i+1]) { b[++cnt]=s; s=0; } } ll ans=1; bool v=0; int last=1; for(int i=1;i<=cnt;i++) { v^=(b[i]&1); if (!v) { ans=ans*calc(last,i)%MOD; last=i+1; } } return ans; } int main() { pre(200000); int cases; scanf("%d",&cases); for(;cases;cases--) { int n; scanf("%d",&n); for(int i=1;i<=2*n;i++) scanf("%d",&a[i]); printf("%d\n",solve(2*n)); } return 0; }