#TEST1020. 山里不动的树

山里不动的树

题目背景

山里有不动的树,山里还有灵活的狗,还有……

这是神里绫华,她很好看。

神里绫华

题目描述

给定一颗 NN 个节点的有根树,1号节点为根节点,点 ii 的权值为 wiw_i,有 QQ 次询问,每次询问给出三个数 u,v,xu,v,x ,树上从 uuvv 的路径上的所有点的集合记为 SS 集合,求出

iSwlca(i,x)\sum_{i \in S}{w_{lca(i,x)}}

即分别求出从 uuvv 的路径上的所有点和 xx 的最近公共祖先,之后把这些最近公共祖先的权值求和。

注:lca(a,b)lca(a,b) 表示 a,ba,b 的最近公共祖先。

输入

第一行一个正整数 TT 表示数据组数。

对于每组数据,第一行两个正整数 N,Q(1N,Q105)N,Q(1 \leq N,Q \leq 10^5)​ 分别表示节点的数量和询问数量。

接下来一行 NN 个正整数,第 ii 个正整数表示第 ii 个节点的权值 wi(109wi109)w_i(-10^9 \leq w_i \leq 10^9)

接下来 N1N-1 行,每行两个正整数 u,v(1u,vN)u,v(1 \leq u,v \leq N) 表示树中存在一条连接 uuvv 的边,保证给出的数据一定形成一棵树。

最后 QQ 行,每行三个正整数 u,v,x(1u,v,xN)u,v,x(1 \leq u,v,x \leq N)​ 表示一次询问。

保证 N,QN,Q 的和不超过 10510^5

输出

对于每组数据输出 Q 行,按顺序输出每次询问的结果 iSwlca(i,x)\sum_{i \in S}{w_{lca(i,x)}}

样例

1
9 4
8 4 3 6 3 6 10 5 2
1 2
2 3
2 4
2 5
3 6
3 7
4 8
8 9
1 1 1
1 2 5
6 8 7
6 8 5
8
12
18
20