P25138 [AtCoder] Almost Sorted
提高-
题目描述

Problem Statement

Given is $a sequence a_1,\dots,a_n$ consisting of $1,\dots, n$ and -1, along with an integer d.
How many sequences $p_1,\dots,p_n$ satisfy the conditions below?
Print the count modulo 998244353.

  • $p_1,\dots,p_n$ is a permutation of $1,\dots, n$.
  • For each $i=1,\dots,n, a_i=p_i$ if $a_i\neq -1. ($That is$, p_1,\dots,p_n$ can be obtained by replacing the -1s in $a_1,\dots,a_n$ in some way.)
  • For each $i=1,\dots,n, |p_i - i|\le d$.

Input

Input is given from Standard Input in the following format:
n d
$a_1 \dots a_n$

Output

Print the number of sequences that satisfy the conditions, modulo 998244353.

Constraints

  • $1 \le d \le 5$
  • $d < n \le 500$
  • $1\le a_i \le n$ or a_i=-1.
  • $|a_i-i|\le d$ if $a_i\neq -1$.
  • $a_i\neq a_j$, if $i\neq j$ and $a_i, a_j \neq -1$.
  • All values in input are integers.

Sample Input 1

4 2
3 -1 1 -1

Sample Output 1

2

The conditions are satisfied by (3,2,1,4) and (3,4,1,2).

Sample Input 2

5 1
2 3 4 5 -1

Sample Output 2

0

The only permutation of 1,2,3,4,5 that can be obtained by replacing the -1 is (2,3,4,5,1), whose fifth term violates the condition, so the answer is 0.

Sample Input 3

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

Sample Output 3

794673086

Print the count modulo 998244353.

输入格式

见题面 Input 部分

输出格式

见题面 Output 部分

样例输入
4 2 3 -1 1 -1
样例输出
2