#include using namespace std; long long mod=1000000007; long long f(long long l, long long r, long long k, long long p) { l++; r++; long long q; if(k>p){ k--; p=(l*(r*(r+l))%mod*500000004%mod)%mod; if(k>=r-1) q=(l)*((k+k-r+1)*r%mod)%mod*500000004%mod; else q=(l)*k%mod*(k+1)%mod*500000004%mod; long long a=l-1,b=max((long long)0,k-r); if(a=r-1) q=(l)*((k+k-r+1)*r%mod)%mod*500000004%mod; else q=(l)*k%mod*(k+1)%mod*500000004%mod; long long a=l-1,b=max((long long)0,k-r); if(a A) { int R=A.size()-1; stack S; for (long long i=0; ii) R--; r1[i]=R+1; } else l[i]=S.top()+1,r1[i]=A.size(); S.push(i); } int L=0; while(S.size()) S.pop(); for (long long i=A.size()-1; i>=0; i--) { while(S.size() && A[S.top()]> n; // srand(time(NULL)); // n=200000; vector a(n); for(long long a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; // a[a_i]=1000000; } long long result = solve(a); // cout << result << endl; return 0; }