题目描述
给定由 1,dots,n 和 \-1 组成的序列 a1,dots,an,以及一个整数 d。有多少个满足以下条件的序列 p1,dots,pn?将结果模 998244353 输出。
- p1,dots,pn 是 1,dots,n 的排列。
- 对于每个 i=1,dots,n,如果 aineq−1,则 ai=pi。(也就是说,可以通过在 a1,dots,an 中替换掉 \-1 来获得 p1,dots,pn。)
- 对于每个 i=1,dots,n,∣pi−i∣led。
约束条件
- 1ledle5
- d<nle500
- 1leailen 或 ai=−1。
- 如果 aineq−1,则 ∣ai−i∣led。
- 如果 ineqj 且 ai,ajneq−1,那么 aineqaj。
- 输入中的所有值都是整数。
输入
从标准输入中以以下格式给出输入:
n d
a1 dots an
输出
输出满足条件的序列的数目,将结果模 998244353 输出。
示例输入1
4 2
3 -1 1 -1
示例输出1
2
条件满足的排列有 (3,2,1,4) 和 (3,4,1,2)。
示例输入2
5 1
2 3 4 5 -1
示例输出2
0
只有一个满足条件的排列 1,2,3,4,5,它是通过将 \-1 替换为 1 获得的,并且它的第五个元素违反了条件,因此答案是 0。
示例输入3
16 5
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
示例输出3
794673086
将结果模 998244353 输出。