#include<cstdio>
#include<cctype>
#include<algorithm>
inline int getint() {
	register char ch;
	while(!isdigit(ch=getchar()));
	register int x=ch^'0';
	while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
	return x; 
}
constexpr int mod=1e9+7;
constexpr int N=51,M=100;
int a[N],f[N][M][M];
int main() {
	const int n=getint(),m=n*2-1;
	for(register int i=1;i<=m;i++) a[i]=getint();
	std::sort(&a[1],&a[m]+1);
	f[n][0][0]=1;
	for(register int i=n;i>1;i--) {
		const bool l=a[i]!=a[i-1],r=a[n*2-i]!=a[n*2-i+1];
		for(register int j=0;j<=m;j++) {
			for(register int k=0;k<=m;k++) {
				(f[i-1][j+l][k+r]+=f[i][j][k])%=mod;
				for(register int t=0;t<j+l;t++) {
					(f[i-1][t][k+r+1]+=f[i][j][k])%=mod;
				}
				for(register int t=0;t<k+r;t++) {
					(f[i-1][j+l+1][t]+=f[i][j][k])%=mod;
				}
			}
		}
	}
	int ans=0;
	for(register int i=0;i<=m;i++) {
		for(register int j=0;j<=m;j++) {
			(ans+=f[1][i][j])%=mod;
		}
	}
	printf("%d\n",ans);
	return 0;
}