#include using namespace std; using LL=long long; using ULL=unsigned long long; #define rep(i,n) for(int i=0;i<(n);i++) const ULL M=1000000007; int main(){ int N; cin>>N; vector A(N); rep(i,N) cin>>A[i]; vector lisT(N+1,1000000001); vector I(N); int p=0; rep(i,N){ int l=0, r=N+1; while(r-l>1){ int m=(l+r)/2; if(lisT[m-1] pre(p+1,-1); pre[0]=0; vector dp(N+1); dp[0]=1; rep(i,N){ if(pre[I[i]]!=-1) dp[i+1]+=dp[pre[I[i]]]; if(pre[I[i]-1]!=-1) dp[i+1]+=dp[pre[I[i]-1]]; dp[i+1]%=M; pre[I[i]]=i+1; } cout<