#include <cstdio>
#include <cstring>
#include <algorithm>

typedef long long LL;
const int Mod = 1000000007;
const int MN = 55;

int N, A[MN * 2];

int f[MN][MN * 2][MN * 2];
int DP(int i, int a, int b) {
	if (i == 1) return 1;
	if (~f[i][a][b]) return f[i][a][b];
	int na = a + (A[i - 1] != A[i]);
	int nb = b + (A[2 * N - i + 1] != A[2 * N - i]);
	LL v = DP(i - 1, na, nb);
	for (int j = 1; j <= na; ++j) v = (v + DP(i - 1, na - j, nb + 1)) % Mod;
	for (int j = 1; j <= nb; ++j) v = (v + DP(i - 1, na + 1, nb - j)) % Mod;
	return f[i][a][b] = v % Mod;
}

int main() {
	scanf("%d", &N);
	for (int i = 1; i <= 2 * N - 1; ++i) scanf("%d", &A[i]);
	std::sort(A + 1, A + 2 * N);
	memset(f, -1, sizeof(f));
	printf("%d\n", DP(N, 0, 0));
	return 0;
}