N=int(input()) A=[0]*N B=[0]*N for i in range(N): A[i],B[i]=map(lambda x:int(x)-1,input().split()) par=[i for i in range(N)] #par[x]はxの親の番号,初期状態では全ての頂点が根なのでpar[x]=x size=[1]*N rank=[0]*(N+1) #ランクを用意 def root(x): #xが属する木の根を求める if par[x]==x: #xが根なら終わり return x else: par[x]=root(par[x]) #でなければ親の根につける return par[x] #再帰の終わりにはたどった頂点全てが根についてる def unite(x,y): rx,ry=root(x),root(y) if rx==ry: #はなから同じグループに属してるなら何もしない return else: if rank[x]