#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MAX=5e5+7;
int par[MAX]; //父亲
int _rank[MAX]; //集合中的元素个数
//初始化n个元素
void Init(int n)
{
for(int i=0;i<=n;++i)
{
par[i]=i;
_rank[i]=1;
}
}
//查询祖先递归速度快
int Find(int x)
{
if(x!=par[x])
par[x] = Find(par[x]);
return par[x];
}
//关于路径压缩查找祖先
int Find2(int x)
{
int fx=Find(x);
int t;
while(x!=fx){
t=par[x];
par[x]=fx;
x=t;
}
return fx;
}
//合并x和y所属集合
void Unite(int x,int y)
{
int fx=Find(x);
int fy=Find(y);
if(fx!=fy)
{
par[fx]=fy;
_rank[fy]+=_rank[fx];
}
/*
用于判断树的层数 须将每个_rank初始化为0
if(fx==fy)return;
if(_rank[fx]>_rank[fy])
par[fx]=fy;
else{
par[fy]=fx;
if(rank[fx]==rank[fy])
_rank[x]++;
}*/
}
bool Same(int x,int y)//判断是否属于同一集合
{
return Find(x)==Find(y);
}
signed main()
{
return 0;
}