트리와 쿼리
시간 제한2초메모리 제한1024 MB
부모 간선을 끊고 다른 정점에 잇는 갱신을 처리하면서 두 정점 사이 단순 경로 위 정점 번호의 합을 구한다.
문제
루트의 번호가 이고 정점의 개수가 무한한 포화 이진 트리가 있다. 이 트리에서 번 정점의 왼쪽 자식은 , 오른쪽 자식은 번 정점이며, 서로 양방향으로 연결되어 있다. 이 트리에 개의 쿼리를 수행해 보자.
쿼리의 종류는 다음과 같다.
1 a b: 번 정점과 그 부모를 잇는 간선을 제거하고, 번 정점과 번 정점을 잇는 간선을 추가한다. 단, 를 만족하는 경우만 주어진다.2 c d: 번 정점에서 번 정점으로 가는 단순 경로상에 존재하는 모든 정점의 번호의 합을 출력한다.
1번 쿼리를 수행한 후에도 항상 트리의 조건을 만족함을 증명할 수 있다. 2번 쿼리는 최소 한 번 이상 주어진다.

입력
첫 번째 줄에 쿼리의 개수를 나타내는 정수 가 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 쿼리가 주어진다.
출력
2번 쿼리가 주어질 때마다 그 결과를 한 줄에 하나씩 출력한다.
힌트
는 와 같거나 그보다 작은 정수 중 가장 큰 정수이다.