#include using namespace std; #define mod 1000000007 const int MAX=2e3+7; long long dp[MAX][MAX],sum[MAX][MAX]; long long fact[MAX],inv[MAX]; int n,a[MAX]; long long expo(long long a,long long b) { long long x=1,y=a; while(b>0) { if(b%2==1) { x=(x*y); if(x>=mod) x=x%mod; } y=(y*y); if(y>=mod) y=y%mod; b=b/2; } return x; } int npr(int n,int k) { if(n=mod) temp=temp%mod; return temp; } int func() { fact[0]=1; inv[0]=1; for(int i=1; i<=n; i++) { fact[i]=(fact[i-1]*(long long)i)%mod; inv[i]=expo(fact[i],mod-2); } long long ans=0; for(int i=1; i<=n; i++) { for(int j=1; j<=i; j++) { if(i-j==0) { dp[i][j]=1; continue; } for(int k=j; i-j>=k&&k<=n; k++) { dp[i][j]+=(long long)npr(k,j)*dp[i-j][k]; dp[i][j]=dp[i][j]%mod; } if(a[i-j]>a[i-j+1]) break; } // cout<>n; for(int i=1; i<=n; i++) cin>>a[i]; cout<