#include using namespace std; using ll = long long; const ll mod=1e9+7 ; int main(){ int n;cin>>n; vector a(n); for(auto& e:a)cin>>e; vector dp(n+1,mod); vector ans(n+1,0); vector>> dq(n+1); dp[0]=-mod;ans[0]=1; dq[0].emplace_back(-mod,1); for(auto e:a){ int idx = lower_bound(dp.begin(),dp.end(),e) - dp.begin() - 1; while(dq[idx].front().first >= e){ ans[idx] += mod - dq[idx].front().second; dq[idx].pop_front(); } ans[idx] %= mod; dp[idx+1] = e; (ans[idx+1] += ans[idx]) %= mod; dq[idx+1].emplace_back(e,ans[idx]); } int idx = lower_bound(dp.begin(),dp.end(),mod) - dp.begin() - 1; cout << ans[idx] << endl; return 0; }