1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <bits/stdc++.h>
using namespace std;

using ll = int64_t;


const ll mod = 1000000007;

ll euclid(ll a, ll b, ll &x, ll &y) {
	if (!b) return x = 1, y = 0, a;
	ll d = euclid(b, a % b, y, x);
	return y -= a/b * x, d;
}

struct Mod {
	ll x;
	Mod(ll xx) : x(xx) {}
	Mod operator+(Mod b) { return Mod((x + b.x) % mod); }
	Mod operator-(Mod b) { return Mod((x - b.x + mod) % mod); }
	Mod operator*(Mod b) { return Mod((x * b.x) % mod); }
	Mod operator/(Mod b) { return *this * invert(b); }
	Mod invert(Mod a) {
		ll x, y, g = euclid(a.x, mod, x, y);
		assert(g == 1); return Mod((x + mod) % mod);
	}
	Mod operator^(ll e) {
		if (!e) return Mod(1);
		Mod r = *this ^ (e / 2); r = r * r;
		return e&1 ? *this * r : r;
	}
};

void solve() {
  int n;
  cin >> n;

  vector<int> vs(2 * n);
  for(auto& v : vs) {
    cin >> v;
  }

  auto factorial = [] (ll i) -> Mod {
    Mod ans = 1;
    for(ll j = 2; j <= i; j++) {
      ans = ans * j;
    }
    return ans;
  };

  if(*min_element(vs.begin(), vs.end()) == *min_element(vs.begin(), vs.end()) && vs[0] != 1) {
    Mod ans = 2 * n;
    ans = ans * (2 * n - 1);
    ans = ans * factorial(4 * n - 2);
    ans = ans / (Mod(2) ^ (2 * n));
    cout << ans.x % mod;
  }
  else {
    cout << 0;
  }
}

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  //freopen("in", "r", stdin);
  //solve();
  int t;
  cin >> t;
  while(t--) {
    solve();
    cout << "\n";
  }
}