Antinomy与紫水宫
题号:NC215137
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述



沉迷《原初幻想41》的冒险者Antinomy来到了紫水宫——红玉海海底的一座古老宫殿,翠水之民的公主红玉曾被困在这里,光之战士将她解决了出来,并鼓励她带领族人拥抱地面上的变化。

紫水宫附近有许多海沟,Antinomy骑着肥鸡飞的时候发现迷路了。海沟可以看成是一棵树状的结构,共有个结点,每个结点就是一个路口,叶子结点就是走不下去的死胡同路口。

Antinomy想在每个结点上放不同颜色的便携式以太之光水晶,共有种颜色,每种颜色的以太之光的数量都是无限的(生产系玩家有钱),为了摆脱迷路的困境,Antinomy希望对于树上每对结点,如果的最短距离小于,那么上放的以太之光水晶必须是不同颜色的。

Antinomy想知道有多少种满足这个要求的方案,由于答案可能很大,所以请输出答案对取模的结果。

提示:
1. 树上结点间的最短距离在某种意义上是可以直接确定的
2. 考虑用一些排列组合的方法加速运算,每个节点的贡献也许与颜色数量和其子树大小有关
3. 取模运算满足:
(a + b) % p = (a % p + b % p) % p 
(a - b) % p = (a % p - b % p) % p
(a * b) % p = (a % p * b % p) % p 
a ^ b % p = ((a % p)^b) % p 
((a+b) % p + c) % p = (a + (b+c) % p) % p 
((a*b) % p * c)% p = (a * (b*c) % p) % p
(a + b) % p = (b+a) % p
(a * b) % p = (b * a) % p
((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p

输入描述:

第一行输入两个整数,表示有个结点和种颜色的以太之光水晶。
接下来行每行输入两个整数,表示相连。




输出描述:

输出一行一个整数表示方案数量,由于答案可能很大,所以请输出答案对取模的结果。

示例1

输入

复制
4 4
1 2
2 3
2 4

输出

复制
24
示例2

输入

复制
4 3
1 2
2 3
2 4

输出

复制
0
示例3

输入

复制
5 7
1 2
2 3
3 4
3 5

输出

复制
4200