class UnionFind: """0-indexed""" def __init__(self, n): self.n = n self.parent = [-1] * n self.__group_count = n def unite(self, x, y) -> bool: """xとyをマージ""" x = self.root(x) y = self.root(y) if x == y: return False self.__group_count -= 1 if self.parent[x] > self.parent[y]: x, y = y, x self.parent[x] += self.parent[y] self.parent[y] = x return True def is_same(self, x, y) -> bool: """xとyが同じ連結成分か判定""" return self.root(x) == self.root(y) def root(self, x) -> int: """xの根を取得""" if self.parent[x] < 0: return x else: # 経路圧縮あり # self.parent[x] = self.root(self.parent[x]) # return self.parent[x] # 経路圧縮なし return self.root(self.parent[x]) import sys input = sys.stdin.readline N,Q = map(int, input().split()) d = {} s = set() uf = UnionFind(N) for i in range(N): d[uf.root(i)] = i s.add(i) for i in range(Q): q = list(map(int, input().split())) if q[0]==1: a,b = q[1]-1,q[2]-1 ra,rb = uf.root(a),uf.root(b) if ra==rb:continue uf.unite(a,b) rab = uf.root(a) if ra==rab: s.remove(d[rb]) else: s.remove(d[ra]) else: a = q[1]-1 if len(s)==1: print(-1) else: r = uf.root(a) for s_ in s: if s_!=d[r]: print(s_+1) break