int find(int x){
int r=x;
while(pre[r]!=r){
r=pre[r];
}
int i=x,j;
while(pre[i]!=r){
j=pre[i];
pre[i]=r;
i=j;
}
return r;
}
int find(int x){
if(pre[x]==x)return x;
else{
int r=find(pre[x]);
pre[x]=r;
return pre[x];
}
}
void join(int x,int y){
int rx=find(x);
int ry=find(y);
if(rx!=ry){
pre[ry]=rx;
}
}