#include<stdio.h>
long long M=1000000007;
int main()
{
int n,i,j,temp,count=0;
scanf("%d",&n);
unsigned long long a[n],ans=1;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<n-1;j++)
{
for(i=0;i<n-j-1;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=1;i<=n;i++)
{
if(a[count]-i<0)
{
printf("0");
return 0;
}
count++;
}
count=0;
for(i=0;i<n;i++)
{
ans=ans*(a[i]-i)%M;
ans%=M;
count++;
}
printf("%d",ans);
}
求大佬指点