시간 제한메모리 제한제출정답맞힌 사람정답 비율
4 초 1024 MB50242250.000%

문제

1번 노드를 루트로 하며 간선에 가중치가 있는 트리가 주어진다. 모든 노드의 번호는 $1, 2, \cdots{} , 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 \leq{} N \leq{} 100,000)$ 이 주어진다.

둘째 줄부터 $N-1$개의 줄에는 간선에 대한 정보를 나타내는 정수 $x, y, d$ 가 주어진다. 이는 최초의 트리에서 $x$번 노드와 $y$번 노드를 잇는 간선의 가중치 값이 $d$임을 나타낸다. $(1\leq{} x, y \leq{} N$, $x \neq{} y$ 이고 $0 \leq{} d \leq{} 10^6)$

다음 줄에는 쿼리의 개수를 의미하는 정수 $Q (1\leq{}Q\leq{}100,000)$ 가 주어진다.

다음 $Q$개의 줄에는 한 줄에 하나씩 다음과 같은 형식 중 하나로 쿼리가 주어진다. (주어지는 모든 입력은 정수이다.)

  • 1 $x$ $v$ $(2\leq{}x\leq{}N$, $0\leq{}v\leq{}10^6)$
  • 2 $x$ $y$ $(1\leq{} x, y \leq{} N)$

2번 쿼리는 한 번 이상 주어지며 $x$와 $y$가 같을 수 있음에 유의하라.

출력

각각의 2번 쿼리의 결과를 순서대로 한 줄에 하나씩 출력한다.

예제 입력 1

5
1 2 1
1 3 0
2 4 4
2 5 10
4
2 3 3
2 4 1
1 3 10
2 5 3

예제 출력 1

0
28
1

힌트

xor 연산은 아래 링크를 통해 확인하자.

링크