#arc132c. [arc132_c]Almost Sorted

[arc132_c]Almost Sorted

题目描述

给定由 1,dots,n1,\\dots, n\-1\-1 组成的序列 a1,dots,ana_1,\\dots,a_n,以及一个整数 dd。有多少个满足以下条件的序列 p1,dots,pnp_1,\\dots,p_n?将结果模 998244353998244353 输出。

  • p1,dots,pnp_1,\\dots,p_n1,dots,n1,\\dots, n 的排列。
  • 对于每个 i=1,dots,ni=1,\\dots,n,如果 aineq1a_i\\neq -1,则 ai=pia_i=p_i。(也就是说,可以通过在 a1,dots,ana_1,\\dots,a_n 中替换掉 \-1\-1 来获得 p1,dots,pnp_1,\\dots,p_n。)
  • 对于每个 i=1,dots,ni=1,\\dots,npiiled|p_i - i|\\le d

约束条件

  • 1ledle51 \\le d \\le 5
  • d<nle500d < n \\le 500
  • 1leailen1\\le a_i \\le nai=1a_i=-1
  • 如果 aineq1a_i\\neq -1,则 aiiled|a_i-i|\\le d
  • 如果 ineqji\\neq jai,ajneq1a_i, a_j \\neq -1,那么 aineqaja_i\\neq a_j
  • 输入中的所有值都是整数。

输入

从标准输入中以以下格式给出输入:

nn dd a1a_1 dots\\dots ana_n

输出

输出满足条件的序列的数目,将结果模 998244353998244353 输出。


示例输入1

4 2
3 -1 1 -1

示例输出1

2

条件满足的排列有 (3,2,1,4)(3,2,1,4)(3,4,1,2)(3,4,1,2)


示例输入2

5 1
2 3 4 5 -1

示例输出2

0

只有一个满足条件的排列 1,2,3,4,51,2,3,4,5,它是通过将 \-1\-1 替换为 11 获得的,并且它的第五个元素违反了条件,因此答案是 00


示例输入3

16 5
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

示例输出3

794673086

将结果模 998244353998244353 输出。