RT
为什么 val 相同时还要比较 id 的大小?
ll merge(ll X,ll Y){
if(!X||!Y)return X+Y;
if(H[X].val>H[Y].val||(H[X].val==H[Y].val&&H[X].id>H[Y].id))swap(X,Y);
H[X].rson=merge(H[X].rson,Y);
if(H[H[X].lson].dist<H[H[X].rson].dist)swap(H[X].lson,H[X].rson);
H[X].dist=H[H[X].rson].dist+1;
return X;
}