집합 연산

시간 제한2초메모리 제한128 MB

문제

처음에는 $0$부터 $n$까지의 각 원소가 서로 다른 집합에 들어 있다. 즉, 초기 집합은 $\{0\}, \{1\}, \{2\}, \dots, \{n\}$이다.

두 종류의 연산을 처리해야 한다. 하나는 두 원소가 속한 집합을 합치는 연산이고, 다른 하나는 두 원소가 같은 집합에 속하는지 확인하는 연산이다.

주어진 연산들을 순서대로 처리하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 $n$과 $m$이 주어진다. $m$은 수행할 연산의 개수이다.

다음 $m$개의 줄에는 각각 하나의 연산이 주어진다.

  • 0 a b: $a$가 속한 집합과 $b$가 속한 집합을 합친다.
  • 1 a b: $a$와 $b$가 같은 집합에 속하는지 확인한다.

출력

1 a b 형태의 연산마다, $a$와 $b$가 같은 집합에 속하면 YES, 그렇지 않으면 NO를 한 줄에 하나씩 출력한다.

제한

  • $1 \le n \le 1\,000\,000$
  • $1 \le m \le 100\,000$
  • $0 \le a, b \le n$
  • $a$와 $b$는 정수이다.
  • $a$와 $b$는 같을 수 있다.