int root[maxn];
int find(int a){
if(root[a] != a){
return root[a]=find(root[a]);
}
return a;
}
void union(int a,int b){
int roota=find(a);
int rootb=find(b);
if(rootb == roota) return;
root[roota] = rootb;
}
int root[maxn];
int find(int a){
if(root[a] != a){
return root[a]=find(root[a]);
}
return a;
}
void union(int a,int b){
int roota=find(a);
int rootb=find(b);
if(rootb == roota) return;
root[roota] = rootb;
}