Yevin Kang 拥有一棵包含 $N$ 个顶点的树,顶点编号从 $1$ 到 $N$。树是一个不包含环的无向连通图。
设 $K$ 为一个正整数。我们定义 $f(K)$ 如下:
对于任意两个顶点 $1 \le u, v \le N$,令 $d(u, v)$ 表示连接顶点 $u$ 和顶点 $v$ 的简单路径上的边数。特别地,对于所有 $1 \le u \le N$,有 $d(u, u) = 0$。
如果一个 $1, \dots, N$ 的排列 $p_1, \dots, p_N$ 满足以下所有条件,则称其为“好”的: 对于所有 $i = 2, \dots, N$,满足 $d(p_{i-1}, p_i) \le K$。 对于所有满足 $1 \le i < j \le N$ 的整数对 $(i, j)$,满足 $d(1, p_i) \le d(1, p_j)$。
那么,$f(K)$ 即为好排列的数量。
Yevin 认为这个问题太简单了,所以他给了你 $Q$ 个正整数 $K_1, \dots, K_Q$。他要求你输出 $f(K_1), f(K_2), \dots, f(K_Q)$ 的值,结果对 $10^9 + 7$ 取模。
注意,“mod”在大多数编程语言中对应 % 运算符,表示除法后的余数。例如,$5 \pmod 3 = 2$ 且 $17 \pmod 4 = 1$。
输入格式
每个测试包含多个测试用例。
第一行包含一个整数 $T$ ($1 \le T \le 5 \times 10^5$),表示测试用例的数量。
每个测试用例的第一行包含两个空格分隔的整数 $N, Q$ ($1 \le Q \le N \le 5 \times 10^5$)。
接下来的 $N - 1$ 行,每行包含两个空格分隔的整数 $u, v$,表示树中存在一条连接 $u$ 和 $v$ 的边。保证这 $N - 1$ 条边构成一棵树。
下一行包含 $Q$ 个整数 $K_1, \dots, K_Q$,表示 $Q$ 个查询。
保证所有测试用例中 $N$ 的总和(记为 $\sum N$)不超过 $5 \times 10^5$。
下表显示了 25 分的分布情况:
| 分数 | $\sum N$ 的范围 | $Q$ 的范围 | $K_i$ 的范围 |
|---|---|---|---|
| 2 分 | $1 \le \sum N \le 10$ | $1 \le Q \le N$ | $1 \le K_i \le N$ |
| 3 分 | $1 \le \sum N \le 5 \times 10^5$ | $1 \le Q \le \min(2, N)$ | $1 \le K_i \le \min(2, N)$ |
| 5 分 | $1 \le \sum N \le 3000$ | $1 \le Q \le \min(5, N)$ | $1 \le K_i \le N$ |
| 7 分 | $1 \le \sum N \le 5 \times 10^5$ | $1 \le Q \le N$ | $1 \le K_i \le N$ |
| 8 分 | $1 \le \sum N \le 5 \times 10^5$ | $1 \le Q \le N$ | $1 \le K_i \le N$ |
输出格式
对于每个测试用例,输出一行,包含 $Q$ 个空格分隔的整数,即 $f(K_1), f(K_2), \dots, f(K_Q)$ 的值,对 $10^9 + 7$ 取模。
样例
样例输入 1
2 3 3 1 2 1 3 1 2 3 6 3 1 2 1 3 3 4 3 5 3 6 1 2 3
样例输出 1
0 2 2 0 6 12
说明 1
样例输入中的两棵树如下图所示。
在第一个测试用例中,对于 $K = 2$ 或 $K = 3$,排列 $[1, 2, 3]$ 和 $[1, 3, 2]$ 都是好排列。$[2, 1, 3]$ 对于所有 $K$ 值都不是好排列,因为 $d(1, p_1) = 1 \not\le 0 = d(1, p_2)$ 违反了第二个条件。
可以证明对于 $K = 1$,不存在好排列。
在第二个测试用例中,$[1, 3, 2, 4, 5, 6]$ 是 $K = 3$ 的好排列,但不是 $K = 2$ 的好排列,因为 $d(2, 4) = 3 \not\le 2$。