Bob 最近学习了所有关于树的奇妙算法,于是他决定给你出一个小测验。
你被给定一棵包含 $N$ 个带权节点的无向树。你需要将这棵树切割成 $K$ 个部分(子树)。换句话说,你需要从树中切断 $K-1$ 条边,使得剩余部分构成一个包含 $K$ 棵树的森林。
树的权重定义为树中所有节点的权重之和。你的最终得分是所有部分中权重的最大值。请找到一种最优的切割方案,使得你的最终得分尽可能小。
输入格式
第一行是一个正整数 $T$ ($1 \le T \le 10^5$),表示测试用例的数量。
对于每个测试用例,第一行包含两个整数 $N$ 和 $K$ ($1 \le K \le N \le 10^5$),分别表示树的大小和分区的数量。接下来的 $N-1$ 行,每行包含两个空格分隔的整数 $U_i$ 和 $V_i$ ($1 \le U_i, V_i \le N; U_i \neq V_i$),表示第 $i$ 条边的两个端点。最后一行包含 $N$ 个空格分隔的整数 $W_i$ ($1 \le W_i \le 10^9$),表示节点的权重。
所有测试用例的 $N$ 之和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,输出一行包含 “Case #x: y”,其中 $x$ 是测试用例编号,$y$ 是答案。
样例
样例输入 1
2 5 3 1 2 1 3 1 4 1 5 1 2 3 4 5 5 4 1 2 1 3 1 4 1 5 1 2 3 4 5
样例输出 1
Case #1: 6 Case #2: 5
说明
对于样例 1,三个分区为 $\{1, 2, 3\}, \{4\}, \{5\}$。
对于样例 2,四个分区为 $\{1, 2\}, \{3\}, \{4\}, \{5\}$。