import sys
input = sys.stdin.readline
n, m = map(int, input().split())
indicator = { i : i for i in range(n+1) } # 노드 연결 상태
rank = { i : 0 for i in range(n+1) } # 노드가 위치한 단계
def find(x):
if indicator[x] == x:
#print(indicator, x)
return x
else:
return find(indicator[x]) # 노드가 가리키는 노드로 다시 find
for _ in range(m):
command = list(map(int, input().split()))
#print(indicator)
fst = find(command[1])
tnd = find(command[2])
if command[0] == 1:
if fst == tnd:
print("YES")
else:
print("NO")
else:
if fst == tnd:
pass
else:
if rank[command[1]] > rank[command[2]]: # 랭크 더 높은 쪽으로 노드 연결
indicator[command[2]] = command[1]
else:
indicator[command[1]] = command[2] # 그 반대
if rank[command[1]] == rank[command[2]]: # 그 중에서 랭크 같다면 2번 노드에 연결하고 랭크 += 1
rank[command[2]] += 1
#print(indicator)
aW1wb3J0IHN5cwoKaW5wdXQgPSBzeXMuc3RkaW4ucmVhZGxpbmUKCm4sIG0gPSBtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpCmluZGljYXRvciA9IHsgaSA6IGkgZm9yIGkgaW4gcmFuZ2UobisxKSB9ICMg64W465OcIOyXsOqysCDsg4Htg5wKcmFuayA9IHsgaSA6IDAgZm9yIGkgaW4gcmFuZ2UobisxKSB9ICMg64W465Oc6rCAIOychOy5mO2VnCDri6jqs4QKCmRlZiBmaW5kKHgpOgogICAgaWYgaW5kaWNhdG9yW3hdID09IHg6CiAgICAgICAgI3ByaW50KGluZGljYXRvciwgeCkKICAgICAgICByZXR1cm4geAogICAgZWxzZToKICAgICAgICByZXR1cm4gZmluZChpbmRpY2F0b3JbeF0pICMg64W465Oc6rCAIOqwgOumrO2CpOuKlCDrhbjrk5zroZwg64uk7IucIGZpbmQKCgpmb3IgXyBpbiByYW5nZShtKToKICAgIGNvbW1hbmQgPSBsaXN0KG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkpCiAgICAjcHJpbnQoaW5kaWNhdG9yKQogICAgZnN0ID0gZmluZChjb21tYW5kWzFdKSAKICAgIHRuZCA9IGZpbmQoY29tbWFuZFsyXSkKICAgIGlmIGNvbW1hbmRbMF0gPT0gMToKICAgICAgICBpZiBmc3QgPT0gdG5kOgogICAgICAgICAgICBwcmludCgiWUVTIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludCgiTk8iKQoKICAgIGVsc2U6CiAgICAgICAgaWYgZnN0ID09IHRuZDoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHJhbmtbY29tbWFuZFsxXV0gPiByYW5rW2NvbW1hbmRbMl1dOiAjIOuere2BrCDrjZQg64aS7J2AIOyqveycvOuhnCDrhbjrk5wg7Jew6rKwCiAgICAgICAgICAgICAgICBpbmRpY2F0b3JbY29tbWFuZFsyXV0gPSBjb21tYW5kWzFdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpbmRpY2F0b3JbY29tbWFuZFsxXV0gPSBjb21tYW5kWzJdICMg6re4IOuwmOuMgAogICAgICAgICAgICAgICAgaWYgcmFua1tjb21tYW5kWzFdXSA9PSByYW5rW2NvbW1hbmRbMl1dOiAjIOq3uCDspJHsl5DshJwg656t7YGsIOqwmeuLpOuptCAy67KIIOuFuOuTnOyXkCDsl7DqsrDtlZjqs6Ag656t7YGsICs9IDEKICAgICAgICAgICAgICAgICAgICByYW5rW2NvbW1hbmRbMl1dICs9IDEKI3ByaW50KGluZGljYXRvcik=