경로 위의 첫 검은 정점

정점의 색을 뒤집는 갱신과 함께, 루트에서 v까지의 경로에서 처음 만나는 검은 정점을 찾아 출력한다.

보통7트리세그먼트 트리DFS아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

정점이 NN개인 트리가 있다. 트리는 사이클이 없는 연결 무방향 그래프다. 정점에는 1번부터 NN번까지 번호가 붙어 있고, 처음에는 모든 정점이 흰색이다.

아래 두 쿼리를 입력에 주어진 순서대로 처리하는 프로그램을 작성하시오.

  • 1 i: ii번 정점의 색을 반대로 바꾼다. 흰색이면 검은색이 되고, 검은색이면 흰색이 된다.
  • 2 v: 1번 정점에서 vv번 정점으로 가는 경로를 1번 정점 쪽부터 따라가면서 처음 만나는 검은 정점의 번호를 출력한다. 경로에 검은 정점이 하나도 없으면 -1을 출력한다.

경로에는 1번 정점과 vv번 정점도 포함된다. 트리에서 두 정점을 잇는 경로는 하나뿐이므로 각 쿼리의 답은 하나로 정해진다.

입력

첫째 줄에 정점의 개수 NN이 주어진다. (2N1000002 \le N \le 100000)

둘째 줄부터 N1N-1개의 줄에는 간선 하나가 잇는 두 정점의 번호 uuvv가 주어진다. (1u,vN1 \le u, v \le N, uvu \ne v) 주어지는 간선 N1N-1개는 항상 트리를 이룬다.

다음 줄에 쿼리의 개수 MM이 주어진다. (1M1000001 \le M \le 100000)

이어지는 MM개의 줄에는 쿼리가 한 줄에 하나씩 1 i 또는 2 v 형식으로 주어진다. (1i,vN1 \le i, v \le N)

출력

2번 쿼리마다 답을 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.