著名的 Forcedeltas 编程竞赛共有 $n$ 名参赛者,$m$ 道题目,比赛时长为 $k$ 分钟。
对于每位参赛者 $i$ 和每道题目 $j$,已知一个整数 $a_{i,j}$。如果 $a_{i,j} = 0$,意味着参赛者 $i$ 无法解决题目 $j$。否则,意味着参赛者 $i$ 解决题目 $j$ 恰好需要 $a_{i,j}$ 分钟。
所有参赛者遵循相同的策略。具体来说,每位参赛者会将他们能解决的所有题目列成一个清单,将清单均匀随机打乱,并按该顺序解决题目,直到清单结束或比赛结束。
例如,如果参赛者 $i$ 打乱后的题目清单为 $j_1, j_2, \dots$,那么他们将在第 $a_{i,j_1}$ 分钟解决题目 $j_1$,在第 $a_{i,j_1} + a_{i,j_2}$ 分钟解决题目 $j_2$,依此类推。注意,任何题目都不能在第 $k+1$ 分钟或之后被解决。
如果对于题目 $j$,没有其他参赛者比参赛者 $i$ 更早解决该题,我们称参赛者 $i$ 获得了题目 $j$ 的“最先解决奖”(First to Solve)。特别地,这意味着多名参赛者可以同时获得同一题目的奖项。
求每位参赛者将获得的奖项数量的期望值,结果对 $998\,244\,353$ 取模(详见输出格式部分)。
输入格式
第一行包含三个整数 $n, m$ 和 $k$ —— 参赛者人数、题目数量以及比赛时长(分钟)($1 \le n \le 500; 1 \le m \le 26; 1 \le k \le 300$)。
接下来的 $n$ 行,每行包含 $m$ 个整数 $a_{i,1}, a_{i,2}, \dots, a_{i,m}$($0 \le a_{i,j} \le k$)。其中第 $j$ 个整数表示参赛者 $i$ 解决题目 $j$ 所需的分钟数,若参赛者 $i$ 无法解决题目 $j$ 则为 $0$。
输出格式
输出 $n$ 个整数 —— 参赛者 $1, 2, \dots, n$ 将获得的奖项数量的期望值,对 $998\,244\,353$ 取模。
形式化地,令 $M = 998\,244\,353$。可以证明期望奖项数量可以表示为不可约分数 $\frac{p}{q}$,其中 $p$ 和 $q$ 为整数且 $q \not\equiv 0 \pmod M$。输出等于 $p \cdot q^{-1} \pmod M$ 的整数。换句话说,输出一个满足 $0 \le x < M$ 且 $x \cdot q \equiv p \pmod M$ 的整数 $x$。
样例
样例输入 1
5 3 60 30 0 0 40 20 0 30 60 0 0 0 0 60 60 1
样例输出 1
1 1 249561089 0 499122177
说明
在样例测试中,参赛者 1 将总是获得题目 1 的奖项,参赛者 2 将总是获得题目 2 的奖项,参赛者 3 获得奖项的期望数量为 $\frac{3}{4}$,参赛者 4 将永远不会获得任何奖项,参赛者 5 获得奖项的期望数量为 $\frac{1}{2}$。