“山珍”海味
题号:NC312379
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个长度为 n 的序列 a,满足序列 a 的数两两互不相同,且序列 a 中所有值都在 [0,n] 的闭区间范围内。换句话说,序列 a 是一个 [0,n] 都出现的排列删去一个数得到的新序列。

\hspace{15pt}现在你有 k 次操作以及一个空序列 \text{st},每次操作依次执行如下操作:
\hspace{23pt}\bullet\,选择任意一个位置 i \left( 1\leqq i\leqq n \right),将 a_i 删除;
\hspace{23pt}\bullet\,将下标 i 放入序列 \text{st} 末尾;
\hspace{23pt}\bullet\,再将 \text{mex}(a_1,a_2,\dots,a_{i-1},a_{i+1},\dots a_{n}) 添加到序列 a 的末尾。
\hspace{15pt}显然,操作完成后,a 序列的长度保持不变。

\hspace{15pt}\text{f}_{t}(x) 表示在经过恰好 t 次操作后,最终的 \text{mex}(a_1,a_2,\dots,a_{n})=x 的不同方案数,其中最终得到的序列 \text{st} 为方案序列。
\hspace{15pt}两种长度相同的方案序列不同,当且仅当两个方案序列 \{i_1,i_2,\dots,i_t\}\{j_1,j_2,\dots,j_t\},存在某个位置 p \left( 1\leqq p\leqq t \right),使得 i_p\ne j_p,另外,空序列也算一种合法的方案序列

\hspace{15pt}现在,对于所有的 x\in\{0,1,\dots,n\},求出对应的 \textstyle\sum_{t=0}^{k}\text{f}_t(x) 值。由于答案可能很大,请将答案对 998\,244\,353 取模后输出。

【名词解释】
\hspace{15pt}mex:整数序列的 \operatorname{mex} 定义为没有出现在序列中的最小非负整数。例如,\operatorname{mex}(1,2,3) =0\operatorname{mex}(0,2,5) =1

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 100\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入两个整数 n,k\left(1\leqq n,k\leqq 5\times 10^{3}\right),分别表示序列 a 的初始长度与操作数。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n\left(0\leqq a_i\leqq n\right),保证序列 a 的所有数两两互不相同。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和、k 之和均不超过 5\times 10^3

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出 n+1 个整数,表示 \textstyle\sum_{i=0}^{k}\text{f}_i(x) 的值对 998\,244\,353 取模后的结果,其中 x 依次取 0,1,\dots,n
示例1

输入

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

输出

复制
1 3 11
0 4 11
0 0 31
0 3 4 6
示例2

输入

复制
5
5 10
0 1 3 4 5
10 15
0 1 2 4 5 6 7 8 9 10
10 2000
0 2 3 4 5 6 7 8 9 10
6 520
1 2 3 4 5 6
4 1314
0 1 2 4

输出

复制
0 0 2047 86526 1309528 10808930
0 0 0 21523360 411888052 778520183 234804 348169110 866328669 463227006 365181041
0 2001 419683055 136993170 698008321 649608350 327930363 786975970 700352276 922358214 467350136
1 520 896286168 314312390 697320235 954556547 993400807
0 0 0 439733751 756040099