#include #define rep(i,n) for (int i = 0; i < (n); i++) using namespace std; using ll = long long; using P = pair; int main(){ int n; cin>>n; vector> ai(n+2); for(int i=1; i<=n+1; i++) ai[i].push_back(-1); rep(i, n){ int a; cin>>a; ai[a].push_back(i); } for(int i=1; i<=n+1; i++) ai[i].push_back(n); ll tot=0; map lr, rl; for(int i=1; i<=n+1; i++){ if(i==1){ auto calc=[](int a){ return (ll)(a+1)*a/2; }; rep(j, ai[i].size()-1) tot+=calc(ai[i][j+1]-ai[i][j]-1); for(int j=1; j::iterator> ml; for(auto it=lr.lower_bound(l); it!=lr.end() && (it->second)first)-cl)*(r-(it->second))*i; cl=(it->first); ml.push_back(it); } if(ml.size()>=1){ int firstr=ml[0]->second, lastl=ml.back()->first; for(auto it : ml) lr.erase(it); if(1<=j) lr[l]=firstr; if(j