#include<bits/stdc++.h>
#define L long long
#define vi vector<int>
#define pb push_back
#define pi pair<int,int>
#define pii pair<pi,int>
#define aa first
#define bb second
#define xx aa.aa
#define yy aa.bb
#define zz bb
#define mp make_pair
#define mpp(a,b,c) mp(mp(a,b),c)
using namespace std;
const int q=1000000007;
int n,f[110][110][110],x[110],w[110];
inline void add(int &a,int b)
{
	a=(a+b)%q;
}
int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int i,j,k,l;
	scanf("%d",&n);
	for(i=1;i<=2*n-1;i++)
	  scanf("%d",&x[i]);
	sort(x+1,x+2*n);
	for(i=1;i<n;i++)
	  if(x[i]!=x[i+1])
	    w[i]=1;
	for(i++;i<=2*n-1;i++)
	  if(x[i]!=x[i-1])
	    w[i]=1;
	f[1][1][1]=1;
	for(i=2;i<=n;i++)
	  for(j=1;j<=2*n-1;j++)
	    for(k=1;k<=j;k++)
	      if(f[i-1][j][k])
	        {
			 int jj=j+w[n-i+1]+w[n+i-1],kk=k+w[n-i+1];
			 for(l=1;l<=jj;l++)
			   if(l<kk)
			     add(f[i][jj-(kk-l-1)][l],f[i-1][j][k]);
			   else if(l==kk)
			     add(f[i][jj][kk],f[i-1][j][k]);
			   else
			     add(f[i][jj-(l-kk-1)][kk+1],f[i-1][j][k]);
			}
	k=0;
	for(i=1;i<=2*n-1;i++)
	  for(j=1;j<=i;j++)
	    add(k,f[n][i][j]);
	printf("%d\n",k);
	return 0;
}
