给定一棵带权树 $T_0$,我们定义其直径为树上两点间最长路径的长度,其中路径长度等于路径上所有边权之和。
如果树像蜘蛛或打哈欠的老虎一样伸展,其直径就会发生变化。我们用 $T_i$ 表示 $i$ 秒后的树的状态,此时每条边的权重都比 $T_0$ 增加了恰好 $i$ 个单位。
你将收到若干不同的查询,对于每个查询,你需要计算树在指定时间点的直径。
输入格式
输入包含多个测试用例,第一行包含一个正整数 $T$,表示测试用例的数量,最多为 60。
对于每个测试用例,第一行包含两个整数 $n$ 和 $m$,分别表示树的顶点数和查询次数,其中 $2 \le n \le 2 \times 10^5$,$1 \le m \le 2 \times 10^5$。
接下来的 $(n-1)$ 行,每行包含三个整数 $u, v$ 和 $w$,表示原树中第 $u$ 个顶点和第 $v$ 个顶点之间存在一条权重为 $w$ 的边,其中 $1 \le u, v \le n$,$u \neq v$ 且 $1 \le w \le 10^8$。
接下来的 $m$ 行,每行描述一个查询,包含一个整数 $k$,要求你计算树 $T_k$ 的直径,其中 $0 \le k \le 10^9$。
保证所有测试用例中 $n$ 的总和不超过 $10^6$,且所有测试用例中 $m$ 的总和也不超过 $10^6$。
输出格式
对于每个测试用例,首先输出一行 “Case #x:”,其中 $x$ 是从 1 开始的测试用例编号。
然后输出 $m$ 行,对应所有查询。其中第 $i$ 行包含一个整数,表示第 $i$ 个查询的答案。
样例
样例输入 1
2 3 3 1 2 1 1 3 5 5 10 100 5 6 1 2 100 2 3 5 2 4 1 4 5 1 0 1 2 3 4 5
样例输出 1
Case #1: 16 26 206 Case #2: 105 107 109 111 114 117
说明
在第二个样例中:
- $T_0$ 的直径为 105,即路径 $1 - 2 - 3$ 的长度;
- $T_5$ 的直径为 117,即路径 $1 - 2 - 4 - 5$ 的长度。