만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

우주선

시간 제한10초메모리 제한256 MB

요약
시간에 따라 단방향 항로가 추가되고 삭제되며, 각 질의마다 두 별에서 이동 횟수의 합이 최소인 만남 별을 구합니다. 만날 수 없으면 -1을 출력합니다.
난이도

어려움10점 중 9점

유형
그래프, 최단 경로, 분할 정복, 유니온 파인드
정답자
아직 제출이 없습니다

문제

먼 은하에 문명이 발달한 NN개의 별이 있습니다. 별에는 1부터 NN까지 번호가 붙어 있습니다. 각 별은 우주선을 한 대씩 관리합니다. 우주선은 다른 별로 가기 위해 사용 중이거나, 사용하지 않는 상태 중 하나입니다. 별 aa가 관리하는 우주선이 별 bb로 가기 위해 사용 중이면, 그 우주선은 별 aa와 별 bb 사이를 여러 번 왕복합니다. 우주선이 별 aa에서 별 bb로 갈 때는 일반 승객이 aa에서 bb로 탈 수 있습니다. 그러나 bb에서 aa로 돌아올 때는 연료 문제나 짐을 싣는 일 등의 이유로 일반 승객이 탈 수 없습니다. 별 aa가 관리하는 우주선이 사용하지 않는 상태이면, 그 우주선은 별 aa에서 대기합니다.

지금은 모든 우주선이 사용하지 않는 상태입니다. 앞으로의 우주선 상태 변경 일정은 이미 정해져 있습니다. 상태 변경은 다음 두 가지 중 하나입니다.

  • 사용하지 않는 상태인 별 aa의 우주선을 별 bb로 가기 위해 사용 중인 상태로 바꿉니다. 이는 일반 승객이 그 우주선을 여러 번 타고 bb에서 aa로 갈 수 없을 때에만 수행됩니다.
  • 사용 중인 별 aa의 우주선을 사용하지 않는 상태로 바꿉니다.

이 은하를 여행하는 두 사람이 만날 장소를 정하려고 질문을 여러 개 준비했습니다. 어느 시점에 한 사람은 별 aa에, 다른 한 사람은 별 bb에 있습니다. 두 사람은 일반 승객으로서 우주선을 이용해 합류할 수 있습니까? 합류할 수 있다면, 우주선 사용 횟수가 가장 적은 별은 어디입니까? 즉, 일반 승객이 우주선을 여러 번 타고 aa에서 별 cc로, bb에서 별 cc로 갈 수 있는 별 cc가 존재합니까? 존재한다면, aa에서 cc로 가는 데 쓰는 우주선 사용 횟수와 bb에서 cc로 가는 데 쓰는 사용 횟수의 합을 최소로 하는 별 cc는 무엇입니까?

입력

첫 줄에는 공백으로 구분된 정수 NN과 QQ가 주어집니다. NN은 별의 개수이고, QQ는 상태 변경과 질문의 총 개수입니다.

이어지는 QQ개의 줄은 상태 변경과 질문을 시간순으로 나타냅니다. ii번째 줄에는 공백으로 구분된 정수 2개 또는 3개가 주어집니다. 첫 번째 정수를 TiT_i라 할 때, 다음 중 하나입니다.

  • Ti=1T_i = 1이면, 이 줄에는 TiT_i, AiA_i, BiB_i가 주어집니다. 별 AiA_i가 관리하는 우주선을 별 BiB_i로 가기 위해 사용 중인 상태로 바꿉니다. 1≤Ai≤N1 \le A_i \le N, 1≤Bi≤N1 \le B_i \le N, Ai≠BiA_i \ne B_i이며, 이 시점에 별 AiA_i의 우주선은 사용하지 않는 상태이고, 일반 승객이 그 우주선을 여러 번 타고 BiB_i에서 AiA_i로 갈 수 없습니다.
  • Ti=2T_i = 2이면, 이 줄에는 TiT_i, AiA_i가 주어집니다. 별 AiA_i가 관리하는 우주선을 사용하지 않는 상태로 바꿉니다. 1≤Ai≤N1 \le A_i \le N이며, 이 시점에 별 AiA_i의 우주선은 사용 중입니다.
  • Ti=3T_i = 3이면, 이 줄에는 TiT_i, AiA_i, BiB_i가 주어집니다. 이 시점에 한 사람은 별 AiA_i에, 다른 한 사람은 별 BiB_i에 있을 때 두 사람이 합류할 수 있는지 묻는 질문입니다. 1≤Ai≤N1 \le A_i \le N, 1≤Bi≤N1 \le B_i \le N, Ai≠BiA_i \ne B_i가 보장됩니다.

출력

각 질문에 대해 순서대로 한 줄씩 출력합니다. 합류할 수 있다면, 우주선 사용 횟수를 가장 적게 만드는 합류 장소의 별 번호를 출력합니다. 합류할 수 없다면 -1을 출력합니다.

제한

  • 2≤N≤10000002 \le N \le 1000000
  • 1≤Q≤10000001 \le Q \le 1000000

예제2

  1. 예제 1

    입력
    6 5
    1 2 4
    3 2 6
    1 4 3
    1 6 4
    3 2 6
    
    예상 출력
    -1
    4
    
  2. 예제 2

    입력
    8 36
    1 1 2
    1 6 5
    1 7 8
    3 5 6
    1 5 4
    1 8 1
    3 7 2
    3 3 8
    3 1 8
    1 3 2
    1 4 1
    3 8 5
    3 4 3
    2 4
    3 6 8
    1 2 5
    3 6 8
    2 8
    3 1 4
    3 6 8
    3 6 3
    2 3
    3 1 2
    1 4 3
    3 2 6
    1 8 3
    3 1 7
    3 1 6
    3 5 4
    2 2
    2 5
    1 3 6
    1 2 7
    3 1 4
    3 1 5
    3 6 7
    
    예상 출력
    5
    2
    -1
    1
    1
    2
    -1
    5
    4
    -1
    5
    2
    5
    3
    5
    4
    3
    5
    6