그룹 안에서의 등수

아직 제출이 없습니다시간 제한5초메모리 제한256 MB

문제

학생 NN명이 있다. 1iN1 \le i \le N인 각 ii에 대해 ii번 학생은 시험에서 ii점을 받는다. 학생들은 여러 그룹으로 나뉘어 있고, 처음에는 ii번 그룹에 ii번 학생 한 명만 있다.

다음 두 연산을 처리하는 프로그램을 작성하시오.

  1. 그룹 합치기: 그룹 번호 XXYY가 주어지면 YY번 그룹의 학생을 모두 XX번 그룹으로 옮긴다. 합친 뒤에는 YY번 그룹이 없어진다.
  2. 질의: 학생 번호 JJ가 주어지면 JJ번 학생이 속한 그룹에서 JJ번 학생의 등수를 구한다. 한 그룹에서 점수가 가장 높은 학생이 1등, 두 번째로 높은 학생이 2등이고, 그 뒤도 같은 방식이다.

각 테스트 케이스에는 연산이 LL개 주어진다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다 (T5T \le 5). 이어서 각 테스트 케이스가 다음 형식으로 주어진다.

테스트 케이스의 첫째 줄에는 두 정수 NNLL이 주어진다 (1N1000001 \le N \le 100\,000, 1L2000001 \le L \le 200\,000).

다음 LL개 줄에는 연산이 한 줄에 하나씩 주어진다. 각 줄은 연산의 종류를 나타내는 정수 KK로 시작한다.

  • K=1K = 1이면 같은 줄에 정수 XXYY가 더 주어진다. YY번 그룹의 학생을 XX번 그룹으로 합친다.
  • K=2K = 2이면 정수 JJ가 하나 더 주어진다. JJ번 학생이 속한 그룹에서 그 학생의 등수를 출력한다.

합치기 연산에 주어지는 두 그룹은 모두 아직 남아 있는 그룹이고, XXYY는 서로 다르다.

출력

질의 연산마다 그 학생의 등수를 한 줄에 하나씩 출력한다. 모든 테스트 케이스의 답을 질의가 주어진 순서대로 이어서 출력한다.