#include using namespace std; struct Data { int l,r,id,v; Data() {} Data(int a,int b,int c,int d):l(a),r(b),id(c),v(d) {} bool operator < (const Data & b) const {return (v!=b.v)?vb.l;} }; int num[100005]; int ch[200005][2],l[200005],r[200005]; priority_queue q; bool build(int n) { while (!q.empty()) q.pop(); for(int i=1;i<=n;i++) { q.push(Data(i,i,i,num[i])); l[i]=r[i]=i; } for(int i=1;i