给定一棵拥有 $N$ 个节点和 $N - 1$ 条边的树,其中每条边 $i$ 都有一个复杂度 $l_i$。两个节点 $u$ 和 $v$ 之间的距离 $d(u, v)$ 定义为树上连接它们的唯一路径上所有边的复杂度之和。需要注意的是,$d(u, v) = d(v, u)$ 且 $d(v, v) = 0$。
有 $M$ 个谜题,每个谜题 $i$ 需要 $k_i$ 个信息碎片,这些信息碎片位于树上的特定边上。同一条边上可能会有多个信息碎片!
对于任意两个节点 $S$ 和 $T$,如果从 $S$ 到 $T$ 的路径上,所有遇到的谜题所需的信息碎片都被收集完整,则称 $S$ 和 $T$ 之间的旅程是成功的。具体来说,如果在路径上遇到了某个谜题的至少一个信息碎片,且该谜题所需的所有信息碎片都在路径上被遇到,则该谜题在旅程中被认为是可解的。
任务是计算所有成功旅程的起点 $S$ 和终点 $T$(其中 $1 \le S \le T \le N$)之间的距离之和,结果对 $10^9 + 7$ 取模。
形式化地,任务是计算:
$$\sum_{\substack{1 \le S \le T \le N, \\ \text{旅程 } (S, T) \text{ 是成功的}}} d(S, T)$$
从节点 $S$ 出发,你需要沿着树上的唯一路径前往另一个节点 $T$。沿途,位于该路径边上的任何信息碎片都将被自动收集。为了使从 $S$ 到 $T$ 的旅程被认为是成功的,它必须满足以下条件:
- 设 $O$ 为在旅程中收集到至少一个信息碎片的谜题集合。当且仅当解决集合 $O$ 中每个谜题所需的所有信息碎片都已被收集时,该旅程才是成功的。换句话说,你必须收集到完全解决 $O$ 中每个谜题所需的每一件信息。
输入格式
第一行包含两个空格分隔的整数 $N$ 和 $M$($2 \le N \le 10^6$,$1 \le M \le 10^6$)。
接下来 $N - 1$ 行,每行包含三个空格分隔的整数 $a_i, b_i, l_i$($1 \le a_i, b_i \le N$,$1 \le l_i \le 10^9$),描述连接节点 $a_i$ 和 $b_i$ 且复杂度为 $l_i$ 的边 $i$。
接下来是 $M$ 个谜题的定义。对于每个谜题 $i$,输入首先包含一行,其中有一个整数 $k_i$,后面跟着 $k_i$ 个空格分隔的整数 $u_{i_1}, u_{i_2}, \dots, u_{i_{k_i}}$($0 \le k_i \le K$,$1 \le u_{i_j} \le N - 1$),其中 $u_{i_j}$ 是解决该谜题所需信息碎片所在的边的编号。
这里 $K$ 是所有谜题的 $k_i$ 值之和,保证 $1 \le K \le 10^6$。
输出格式
输出一行,包含一个整数,即答案对 $10^9 + 7$ 取模后的结果。
样例
输入样例 1
5 4 1 2 3 1 4 1 1 5 6 4 3 2 2 4 4 1 1 0 2 3 4
输出样例 1
17
说明
图 1. 树的结构。菱形表示信息碎片,边上的数值表示复杂度。