#include<iostream>
#include<algorithm>
typedef long long int ll;
using namespace std;
int n;
int Maxnumber[55];
int a[55];
ll sum;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>Maxnumber[i];
sort(Maxnumber+1,Maxnumber+n+1);
a[1]=Maxnumber[1];
sum=Maxnumber[1];
for(int i=2;i<=n;i++)
{
if(Maxnumber[i]==Maxnumber[i-1])
{
a[i]=a[i-1]-1;
sum*=a[i];
sum%=1000000007;
}
if(Maxnumber[i]>Maxnumber[i-1])
{
a[i]=Maxnumber[i]-Maxnumber[i-1]+a[i-1]-1;
sum*=a[i];
sum%=1000000007;
}
}
for(int i=1;i<=n;i++)
{
if(a[i]==0||a[i]<0)
cout<<0;
return 0;
}
cout<<sum;
return 0;
}