#include #include using namespace std; using namespace atcoder; int op(int x,int y){ return max(x,y); } int e(){ return -1; } int main(){ int n,q; cin>>n>>q; int a[n]; for(int i=0;i>a[i],a[i]--; int l[q],r[q]; for(int i=0;i>l[i]>>r[i]; l[i]--; } segtree seg(n); vector> le(n); vector ri(n,-1); for(int i=0;i=0){ ri[i]=fr; le[fr].push_back(i+1); } seg.set(a[i],i); } /*cerr<<"!"; for(int i=0;il[i]){ nl--; ans+=upper_bound(le[nl].begin(),le[nl].end(),nr)-le[nl].begin(); } while(nl