#include<iostream>
using namespace std;
#include<queue>
#include<algorithm>
const int MAX_E=10010;
int par[MAX_E];
int rankA[MAX_E];
void init(int n){
for(int i=1;i<=n;i++){
par[i]=i;
rankA[i]=0;
}
}
int find(int x){
if(par[x]==x)
return x;
else
return par[x]=find(par[x]);
}
void unite(int x,int y){
x=find(x);
y=find(y);
if(x==y)
return ;
if(rankA[x]<rankA[y]){
par[x]=y;
}
else{
par[y]=x;
if(rankA[x]==rankA[y])
rankA[x]++;
}
}
bool same(int x,int y){
return find(x)==find(y);
}