int find( int p)
{if(p==a[p]) return p;
else return a[p]=find(a[p]);
}
void union(int p,int q)
{
int pRoot = find(p);
int qRoot = find(q);
if (pRoot == qRoot) {
return;
}
else
id[qRoot] = pRoot;
}
int find( int p)
{if(p==a[p]) return p;
else return a[p]=find(a[p]);
}
void union(int p,int q)
{
int pRoot = find(p);
int qRoot = find(q);
if (pRoot == qRoot) {
return;
}
else
id[qRoot] = pRoot;
}