#include #include #include const int maxn=100005; int n,rt,x,y,z,op,a,ch[maxn][2],val[maxn],rd[maxn],sz[maxn],cnt; inline void PushUp(int x) { sz[x]=sz[ch[x][0]]+1+sz[ch[x][1]]; } inline int NewNode(int v) { val[++cnt]=v; sz[cnt]=1; rd[cnt]=rand(); return cnt; } int merge(int x,int y) { if(!x||!y) return x+y; if(rd[x]