1번 노드를 루트로 하며 간선에 가중치가 있는 트리가 주어진다. 모든 노드의 번호는 1,2,⋯ ,N 으로 이루어져 있다. 두 노드 x, y 에 대하여, x에서 y로 가는 단순 경로 상의 모든 가중치를 xor 한 값을 d(x,y)로 정의하자. x=y 이면 d(x,y)=0 이다.
아래의 두 쿼리를 수행하는 프로그램을 작성하시오.
1 x v : x번 노드에서 x번 노드의 부모로 가는 간선의 가중치 값을 v 로 바꾼다.
2 x y : x의 서브 트리에 속한 임의의 정점 a와 y의 서브 트리에 속한 임의의 정점 b에 대하여, 모든 d(a,b) 값의 총합을 출력한다.
첫째 줄에 트리의 노드의 개수를 의미하는 정수 N(2≤N≤100,000) 이 주어진다.
둘째 줄부터 N−1개의 줄에는 간선에 대한 정보를 나타내는 정수 x,y,d 가 주어진다. 이는 최초의 트리에서 x번 노드와 y번 노드를 잇는 간선의 가중치 값이 d임을 나타낸다. (1≤x,y≤N, x=y 이고 0≤d≤106)
다음 줄에는 쿼리의 개수를 의미하는 정수 Q(1≤Q≤100,000) 가 주어진다.
다음 Q개의 줄에는 한 줄에 하나씩 다음과 같은 형식 중 하나로 쿼리가 주어진다. (주어지는 모든 입력은 정수이다.)
2번 쿼리는 한 번 이상 주어지며 x와 y가 같을 수 있음에 유의하라.
각각의 2번 쿼리의 결과를 순서대로 한 줄에 하나씩 출력한다.
xor 연산은 아래 링크를 통해 확인하자.