class Union {
private int[] nodes;
public Union(int n){
nodes = new int[n];for(int i =0; i < n; i++){
nodes[i]= i;}}
public void join(int a, int b){while(nodes[a]!= nodes[nodes[a]]){
nodes[a]= nodes[nodes[a]];}while(nodes[b]!= nodes[nodes[b]]){
nodes[b]= nodes[nodes[b]];}if(nodes[a]> nodes[b]){
nodes[nodes[a]]= nodes[b];}else{
nodes[nodes[b]]= nodes[a];}}
public boolean isLinked(int a, int b){while(nodes[a]!= nodes[nodes[a]]){
nodes[a]= nodes[nodes[a]];}while(nodes[b]!= nodes[nodes[b]]){
nodes[b]= nodes[nodes[b]];}return nodes[a]== nodes[b];}}