import collections
def find(A):
global root
a=collections.deque([A])
route=[]
while a:
b=a.popleft()
route.append(b)
if b==root[b]:
for i in route:
root[i]=b
# print(root)
return b
a.append(root[b])
N,M=map(int,input().split())
root=[i for i in range(N+1)] # 자기자신을 부모로
for _ in range(M):
x,a,b=map(int,input().split())
if x ==0:# 합
root[a]=min(root[a],root[b])
root[b]=min(root[a],root[b])
# print(root)
else:
# print(root)
if find(a)==find(b):
print('YES')
else:
print('NO')
print(root)
aW1wb3J0IGNvbGxlY3Rpb25zCgpkZWYgZmluZChBKToKCWdsb2JhbCByb290CglhPWNvbGxlY3Rpb25zLmRlcXVlKFtBXSkKCXJvdXRlPVtdCgl3aGlsZSBhOgoJCWI9YS5wb3BsZWZ0KCkKCQlyb3V0ZS5hcHBlbmQoYikKCQlpZiBiPT1yb290W2JdOgoJCQlmb3IgaSBpbiByb3V0ZToKCQkJCXJvb3RbaV09YgoJCQkjIHByaW50KHJvb3QpCgkJCXJldHVybiBiCgkJYS5hcHBlbmQocm9vdFtiXSkKCQoJCk4sTT1tYXAoaW50LGlucHV0KCkuc3BsaXQoKSkKcm9vdD1baSBmb3IgaSBpbiByYW5nZShOKzEpXSAgICAgIyDsnpDquLDsnpDsi6DsnYQg67aA66qo66GcCmZvciBfIGluIHJhbmdlKE0pOgoJeCxhLGI9bWFwKGludCxpbnB1dCgpLnNwbGl0KCkpCglpZiB4ID09MDojIO2VqQoJCXJvb3RbYV09bWluKHJvb3RbYV0scm9vdFtiXSkKCQlyb290W2JdPW1pbihyb290W2FdLHJvb3RbYl0pCgkJIyBwcmludChyb290KQoJZWxzZToKCQkjIHByaW50KHJvb3QpCgkJaWYgZmluZChhKT09ZmluZChiKToKCQkJcHJpbnQoJ1lFUycpCgkJZWxzZToKCQkJcHJpbnQoJ05PJykKcHJpbnQocm9vdCk=