#include using namespace std; #define ll long long int #define MOD 1000000007 #define M(x) (x % MOD + MOD )%MOD #define _mp make_pair #define _pb push_back #define ff first #define ss second ll mul( ll x, ll y) { ll ans=1; while(y>0) { if(y&1) ans=(ans*x)%MOD; x=(x*x)%MOD; y/=2; } return ans; }; //.................................................................................... ll dp[1405][1405],a[2205],fact[2205],in[2205]; int main() { ll n,i,last=0,j,val,k; cin>>n; in[0]=fact[0]=1; for(i=1;i<=2002;i++) { fact[i]=(fact[i-1]*i)%MOD; in[i]=(in[i-1]*mul(i,MOD-2))%MOD; } for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<=n;i++) if(a[i]>last) { last=a[i]; dp[i][i]=1; } else break; for(i=1;ilast) { last=a[k+i]; dp[k+i][k]= ( dp[k+i][k] + (dp[i][j] * (( fact[j] * in[j-k] )%MOD) )%MOD )%MOD; } else break; } /*for(i=1;i<=n;i++) { for(j=1;j<=n;j++) cout<