특별한 그래프

나가는 간선이 최대 하나인 방향 그래프에서 간선 삭제를 반영하며 a에서 시작한 걸음이 b에 닿는 거리를 구합니다.

어려움8그래프트리유니온 파인드아직 제출이 없습니다시간 제한1초메모리 제한64 MB

문제

정점이 NN개인 방향 그래프가 있다. 이 그래프는 정점마다 나가는 간선이 최대 한 개라는 점이 특별하다. 다음 두 종류의 질의를 처리한다.

  • 1 a: 정점 aa에서 나가는 간선을 지운다. 이 간선은 반드시 존재한다.
  • 2 a b: 정점 aa에서 정점 bb로 가는 최단 경로의 길이를 출력한다. 경로가 없으면 -1을 출력한다.

경로의 길이는 지나는 간선의 개수다. 정점에서 나가는 간선이 최대 한 개이므로 aa에서 출발하는 경로는 하나뿐이고, 그 경로를 따라가다 bb에 처음 닿을 때까지 지난 간선의 수가 답이다. aabb가 같으면 답은 0이다.

입력

첫째 줄에 정점의 개수 NN (1N1051 \le N \le 10^5)이 주어진다.

둘째 줄에 정수 NNnext1,next2,,nextNnext_1, next_2, \dots, next_N (0nextiN0 \le next_i \le N)이 주어진다. nextinext_i는 정점 ii에서 정점 nextinext_i로 가는 간선이 있다는 뜻이고, nexti=0next_i = 0이면 정점 ii에서 나가는 간선이 없다.

셋째 줄에 질의의 개수 MM (1M1051 \le M \le 10^5)이 주어진다.

다음 MM개의 줄에 질의가 한 줄에 하나씩 주어진다. 형식은 위에서 설명한 것과 같고, 1a,bN1 \le a, b \le N이다.

출력

2 a b 질의마다 답을 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.