개의 정점으로 이루어진 트리 가 주어진다. 정점은 번부터 번까지 번호가 매겨져 있으며, 각 정점은 검은색 또는 흰색이다.
는 이진 트리이다. 처음에 의 루트는 번 정점이다.
다음 쿼리를 처리하는 프로그램을 작성하라.
1 : 의 루트를 번 정점으로 바꾼다. 어떤 정점을 루트로 정해도 가 이진 트리임이 보장된다.2 : 번 정점의 색을 바꾼다. 흰색은 검은색으로, 검은색은 흰색으로 바뀐다.3 : 현재 루트를 기준으로 번 정점을 루트로 하는 서브트리의 흰색 정점 수를 라 하자. 또한 번 정점부터 현재 루트까지의 경로에 속한 흰색 정점 수를 라 하자. 이때 를 출력한다. 경로에는 양 끝점이 모두 포함된다.입력은 다음과 같은 형식으로 주어진다.
각 3번 쿼리에 대해, 쿼리의 답을 한 줄에 하나씩 출력한다.
첫 번째 케이스의 세 번째 3번 쿼리에서는 번 정점이 서브트리에 포함되고, 번 정점이 루트까지의 경로에 포함된다. 두 구간의 흰색 정점 수는 각각 과 이므로 답은 이다.
각 케이스는 다음과 같은 형식으로 주어진다.
이면 번 정점은 검은색이고, 이면 번 정점은 흰색이다.
번째 간선은 번 정점과 번 정점을 연결한다.
각 는 1 , 2 , 3 중 하나의 형식이다.
3번 쿼리가 한 번 이상 주어진다.| 3 | 43 | 추가적인 제약이 없다. |
두 번째 케이스는 정점이 하나뿐이므로 모든 3번 쿼리의 답은 이다.