#include using namespace std; typedef long long ll; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b #define vl vector #define vii vector> #define vll vector> #define vvi vector> #define vvl vector> #define vvii vector>> #define vvll vector>> #define vst vector #define pii pair #define pll pair #define pb push_back #define all(x) (x).begin(),(x).end() #define mkunique(x) sort(all(x));(x).erase(unique(all(x)),(x).end()) #define fi first #define se second #define mp make_pair #define si(x) int(x.size()) const int mod=998244353,MAX=400005,INF=15<<26; template struct SparseTable{ using F=function; int n,logn; vector> dat; vector loglen; F f; T ti; SparseTable(int n_,F f,T ti) :f(f),ti(ti){ n=1; logn=1; while(n(1<<(j+1))) j++; } dat.resize(logn); for(int i=0;i &v){ for(int j=0;j=n+1) vr=ti; else vr=dat[i-1][j+(1<<(i-1))]; dat[i][j]=f(vls,vr); } } } T query(int l,int r){ if(l>=r) return ti; T vls=dat[loglen[r-l]][l],vr=dat[loglen[r-l]][r-(1< &spa){ //cout<>N; vi P(N); for(int i=0;i>x;x--; P[i]=x; } SparseTable spa(N,[&](int a,int b){return max(a,b);},-INF); spa.set(P); spa.built(); int Q;cin>>Q; while(Q--){ //cout<>l>>r; l--; solve(0,l,r,0,0,l,r,spa); } for(int q=0;q<21;q++){ for(int i=0;i=(1<<(q+1))) imo[q][i]+=imo[q][i-(1<<(q+1))]; if(imo[q][i]) ad[spa.query(i,i+(1<<(q+1)))]+=imo[q][i]; } } for(int i=0;i