「Nhk R2」maimai
题号:NC259921
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

大学生 诗情小姐姐 最近遇到了困难,需要你去帮助她。

她遇到了一个包含 n 个节点的树(保证 n 为偶数),王老师告诉她要将 n 个点两两配对,同时将它们之间的路径上的边覆盖。

可惜的是,这道题并不那么简单。记 f(k) 表示一种配对方案中没有被覆盖的边的数量,其中 k 是一种配对方案。

你的任务是对于所有 f(k)=t(0\leq t\leq n-1),输出满足条件的配对方案 k 的数量。

同时,为了增加题目难度,每条边都有一种属性 w (1\leq w\leq 5),一种合法的配对方案中被覆盖的边必须包含所有属性。

请你帮帮 诗情小姐姐 ,否则她会陷入无限的循环,回到开端。

答案对 998244353 取模。

输入描述:

第一行输入两个数 n,w_{max} 。

接下来 n-1 行每行输入三个整数 u,v,w ,表示 u,v 之间有属性为 w 的边。

保证输入是一颗树。

输出描述:

输出 n 行,第 i 行表示 f(k)=i-1 时的答案。
示例1

输入

复制
4 1
1 2 1
2 3 1
2 4 1

输出

复制
3
0
0
0

说明

合法的配对方案为 \{(1,3),(2,4)\},\{(1,2),(3,4)\},\{(1,4),(2,3)\},其中没有被覆盖的边的数目都是0
示例2

输入

复制
6 2
2 1 2
3 2 2
4 1 2
5 1 1
6 1 2

输出

复制
12
3
0
0
0
0

说明

容易发现,任意配对方案都是合法的。因此总方案数为 5\times 3=15

例如,方案为 \{(1,5),(4,6),(2,3)\} 时,有一条边没有被覆盖,即 12 之间的边。

注意,一条边可以被覆盖多次,因此 \{(1,2),(3,4),(5,6)\} 也是合法的。
示例3

输入

复制
20 4
1 2 1
2 3 1
1 4 4
1 5 3
1 6 1
5 7 3
6 8 2
7 9 3
8 10 4
5 11 2
2 12 3
9 13 2
1 14 4
5 15 3
11 16 1
5 17 2
3 18 1
7 19 2
17 20 4

输出

复制
494779248
137149284
20418564
2178702
187770
14412
1026
66
3
0
0
0
0
0
0
0
0
0
0
0

备注:

对于所有数据,1\leq w_{max}\leq 51\leq w\leq w_{max}n\leq 200,且 n 为偶数。