#P16720. 缝

题目描述

小可可在玩树。

小可可手上有一棵包含 nn 个节点的树。她想把这棵树撕成若干份,也就是断掉若干条边,也可以一条边都不断,从而形成一个森林。

由于小可可不喜欢太长的东西,如果其中某一棵树的直径超过 LL,她就会继续撕这棵树。这里,一棵树的直径定义为树上两点之间路径所经过的最大边数。

之后,小可可又想把分成的若干棵树连接成一棵新的树。由于小可可很懒,她不会重新连接任何一条之前被她断掉的边。

小可可想知道,最终得到的新树一共有多少种可能的形态。由于答案很大,请输出答案对 109+710^9+7 取模的结果。

两棵树的形态不同,当且仅当存在一条边 (u,v)(u,v),它在其中一棵树中出现,而在另一棵树中没有出现。

输入格式

第一行包含两个整数 n,Ln,L,分别表示树的节点数和允许的最长直径。

接下来 n1n-1 行,每行包含两个整数 u,vu,v,表示原树中的一条边。

输出格式

输出一个整数,表示新树可能的形态数量对 109+710^9+7 取模的结果。

样例 1

样例输入 1

2 1
1 2

样例输出 1

1

样例 2

样例输入 2

4 1
1 2
2 3
3 4

样例输出 2

11

样例 3

样例输入 3

5 1
1 2
1 3
2 4
2 5

样例输出 3

80

样例 4

样例输入 4

12 2
1 2
2 3
3 5
4 5
5 7
6 7
7 8
8 9
9 10
9 11
11 12

样例输出 4

330836087

样例 5

样例输入 5

8 2
1 2
2 3
2 4
4 5
3 6
5 7
3 8

样例输出 5

250544

数据范围与约定

  • 对于 20%20\% 的数据,n8n\le 8
  • 对于 40%40\% 的数据,n100n\le 100
  • 对于 60%60\% 的数据,n105n\le 10^5L100L\le 100
  • 对于另外 10%10\% 的数据,L=n1L=n-1
  • 对于全部数据:
1n106,1\le n\le 10^6, 0L<n.0\le L<n.