#include <algorithm>
#include <cstdio>
const int mo=1000000007;
int a[105],f[105][105],g[105][105];
int main(){
	int n;
	scanf("%d",&n);
	for (int i=1;i<n*2;i++) scanf("%d",&a[i]);
	std::sort(a+1,a+n*2);
	f[1][1]=1;
	for (int i=n-1,m=1;i;i--){
		int p=a[i]!=a[i+1],q=a[n*2-i]!=a[n*2-i-1];
		q+=p;m+=2;
		for (int j=m;j;j--)
			for (int k=j;k;k--)
			if (j>q && k>p) g[j][k]=f[j][k]=f[j-q][k-p];
				else g[j][k]=f[j][k]=0;
		for (int j=1;j<=m;j++)
			for (int k=1;k<=j;k++)
			if (g[j][k]){
				int v=g[j][k];
				for (int l=1;l<k;l++) (f[j+1-k+l][l]+=v)%=mo;
				for (int l=j;l>k;l--) (f[j+1-l+k][k+1]+=v)%=mo;
			}
	}
	int ans=0;
	for (int i=1;i<n*2;i++)
		for (int j=1;j<=i;j++) (ans+=f[i][j])%=mo;
	printf("%d\n",ans);
}