#CF1983G. 你的损失

你的损失

G. 你的损失

时间限制:3 秒
内存限制:256 兆字节

给你一棵有 nn 个节点的树,节点编号为 11nn,以及一个大小为 nn 的数组。第 ii 个节点的值为 aia_i。有 qq 个查询。每个查询中,你会得到两个节点 xxyy

考虑从节点 xx 到节点 yy 的路径。设该路径表示为 x=p0,p1,p2,,pr=yx = p_0, p_1, p_2, \dots, p_r = y,其中 pip_i 是路径上的节点。计算

i=0r(apii)\sum_{i=0}^{r} (a_{p_i} \oplus i)

其中 \oplus 表示按位异或运算。

更正式地说,计算

i=0rapii\sum_{i=0}^{r} a_{p_i} \oplus i

输入

第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。每个测试用例包含若干组输入数据。

每组输入数据的第一行包含一个整数 nn1n51051 \le n \le 5 \cdot 10^5)——节点的数量。

接下来 n1n-1 行,每行包含两个整数 uuvv,表示节点 uu 与节点 vv 之间有一条边。保证 uvu \neq v,且这些边构成一棵树。

再下一行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai51051 \le a_i \le 5 \cdot 10^5)——节点的值。

再下一行包含一个整数 qq1q1051 \le q \le 10^5)——查询的数量。

接下来 qq 行描述查询。第 ii 个查询包含两个整数 xxyy1x,yn1 \le x, y \le n),表示路径的起点和终点。

保证所有测试用例的 nn 之和不超过 51055 \cdot 10^5,所有测试用例的 qq 之和不超过 10510^5

输出

对于每个查询,输出一个整数——题目描述中所述的和。

示例

输入

1
4
1 2
2 3
3 4
2 3 6 5
3
1 4
3 4
1 1

输出

14
10
2