rt,第一个点过了,其他点re了,照着同学代码看了很久都不知道哪里不同qwq
#include<iostream>
#define int long long
#define mod 1000000007
using namespace std;
int n,inv[1000005],jc[1000005],num[1000005],ans=1;
int C(int n,int m){
if(m==0) return 1;
if(n<m) return 0;
return jc[n]*inv[jc[m]]%mod*inv[jc[n-m]]%mod;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>num[i];
num[i]/=2;
}
inv[1]=inv[0]=jc[1]=jc[0]=1;
for(int i=2;i<=1000000;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
for(int i=2;i<=1000000;i++) jc[i]=(jc[i-1]*i)%mod;
for(int i=2;i<=n;i++){
if(num[i]<num[i-1]) ans*=C(num[i-1],num[i]);
else ans*=C(num[i]-1,num[i-1]-1);
ans%=mod;
}
cout<<ans;
return 0;
}