春季大扫除通常是我们生活中最无聊的事情,但今年除外,因为 Flóra 和她的母亲在地毯下发现了一棵布满灰尘的古老树状图。
这棵树有 $N$ 个节点(编号从 $1$ 到 $N$),由 $N-1$ 条边连接。这些边积满了灰尘,所以 Flóra 的母亲决定清理它们。
清理任意树的边是通过重复以下过程完成的: 她选择 $2$ 个不同的叶子节点(如果一个节点通过一条边连接到且仅连接到一个其他节点,则称该节点为叶子节点),并清理位于它们之间最短路径上的每一条边。如果这条路径有 $d$ 条边,那么清理这条路径的代价就是 $d$。
她不想伤害树的叶子节点,因此她选择每一个叶子节点至多一次。当所有的边都被清理干净时,这棵树就被清理完毕了。清理的总代价是所有被清理路径的代价之和。
Flóra 认为他们发现的这棵树太小且太简单了,所以她构想了 $Q$ 种变体。 在第 $i$ 种变体中,她在原始树的基础上总共增加了 $D_i$ 个额外的叶子节点:对于每一个新叶子,她选择原始树中的一个节点,并通过一条边将该节点与新叶子连接起来。注意,在此步骤中,某些节点可能不再是叶子节点。
对于所有这 $Q$ 种变体,我们感兴趣的是清理该树所需的最小代价。
输入格式
第一行包含两个空格分隔的整数 $N$ 和 $Q$。 接下来的 $N-1$ 行,每行包含两个空格分隔的整数 $u$ 和 $v$,表示节点 $u$ 和 $v$ 之间有一条边。 接下来的 $Q$ 行描述了各种变体:第 $i$ 行的第一个整数是 $D_i$。随后是 $D_i$ 个空格分隔的整数:如果第 $j$ 个数字是 $a_j$,则意味着 Flóra 在节点 $a_j$ 上增加了一个新叶子。我们可以在同一个节点上增加多个叶子。 在每次变体之后,Flóra 会重置并重新在原始树上增加额外的叶子。
输出格式
你应该输出 $Q$ 行。第 $i$ 行输出一个整数:清理第 $i$ 种变体树所需的最小代价。如果树无法被清理,则输出 $-1$。
样例
样例输入 1
7 3 1 2 2 4 4 5 5 6 5 7 3 4 1 4 2 2 4 1 1
样例输出 1
-1 10 8
说明
下图展示了第二个变体。 一种可能的清理方案是清理叶子 $1-6$、$A-7$ 和 $B-3$ 之间的路径。
数据范围
$3 \le N \le 10^5$ $1 \le Q \le 10^5$ $1 \le u, v \le N$ $1 \le D_i \le 10^5$(对于所有 $i$) $\sum_{i=1}^{Q} D_i \le 10^5$ $1 \le a_j \le N$(对于每个变体中的所有 $j$)
子任务
| 子任务 | 分值 | 约束 |
|---|---|---|
| 1 | 0 | 样例 |
| 2 | 9 | $Q = 1$,对于每个 $i$ ($2 \le i \le N$),节点 $1$ 和 $i$ 之间都有边。Flóra 不会在节点 $1$ 上增加任何额外叶子 |
| 3 | 9 | $Q = 1$,对于每个 $i$ ($1 \le i < N$),节点 $i$ 和 $i+1$ 之间都有边。Flóra 不会在节点 $1$ 或节点 $N$ 上增加任何额外叶子 |
| 4 | 16 | $N \le 20000$ 且 $Q \le 300$ |
| 5 | 19 | 原始树是以节点 $1$ 为根的完美二叉树(即每个内部节点恰好有 $2$ 个子节点,且每个叶子到根的距离相同) |
| 6 | 17 | $D_i = 1$(对于所有 $i$) |
| 7 | 30 | 无额外约束 |