#include <bits/stdc++.h>

const int mod = 1e9 + 7;

int n, tmp, a[101], dp[51][101][101];

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);
	#ifdef DEBUG
	for (int i = 1; i <= 2 * n - 1; ++i) {
		printf("%d ", a[i]);
	}
	puts("");
	#endif
	dp[n][1][1] = 1;
	for (int i = n; i > 1; --i) {
		bool fl = a[i - 1] != a[i], fr = a[2 * n - i + 1] != a[2 * n - i];
		#ifdef DEBUG
		printf("%d %d\n", fl, fr);
		#endif
		for (int j = 1; j <= (n - i + 1) * 2 - 1; ++j) {
			for (int k = j; k <= (n - i + 1) * 2 - 1; ++k) {
				if(tmp = dp[i][j][k]) {
					#ifdef DEBUG
					printf("dp[%d][%d][%d] = %d\n", i, j, k, tmp);
					#endif
					for (int nxt = 1 - fl; nxt < j; ++nxt) {
						(dp[i - 1][nxt + fl][k + fl + fr - (j - nxt - 1)] += tmp) %= mod;
					}
					(dp[i - 1][j + fl][k + fl + fr] += tmp) %= mod;
					for (int nxt = j + 1; nxt <= k + fr; ++nxt) {
						(dp[i - 1][j + 1 + fl][k + fl + fr - (nxt - j - 1)] += tmp) %= mod;
					}
				}
			}
		}
	}
	tmp = 0;
	for (int j = 1; j <= 2 * n - 1; ++j) {
		for (int k = j; k <= 2 * n - 1; ++k) {
			(tmp += dp[1][j][k]) %= mod;
		}
	}
	printf("%d\n", tmp);
	return 0;
}