from collections import defaultdict class UnionFind: def __init__(self,n): self._n=n self._parent_size=[-1 for _ in range(n)] def leader(self,a): if self._parent_size[a]<0:return a self._parent_size[a]=self.leader(self._parent_size[a]) return self._parent_size[a] def merge(self,a,b): x,y=self.leader(a),self.leader(b) if x==y: return if abs(self._parent_size[x])