#CF2122E. 贪婪网格计数

贪婪网格计数

E. 贪婪网格计数
时间限制:4 秒
内存限制:256 兆字节

在一个网格中,如果一条路径从左上角单元格出发,且只能向右或向下移动,并且总是移动到数值更大的相邻单元格(若相等则可任选其一),则称其为贪婪路径
路径的定义为路径所经过单元格(包括起点和终点)的数值之和。

给定一个部分填充的 2×n2 \times n 网格,网格中的整数取值范围为 11kk。计算填充所有空单元格的方式数,使得在每一个子网格*中,都存在一条贪婪路径,该路径能达到该子网格内所有向下/向右路径中的最大值。答案可能很大,请对 998244353998244353 取模。

  • 一个 2×n2 \times n 网格 ai,ja_{i,j}子网格是指由所有满足 1lxxrx21 \le lx \le x \le rx \le 21lyyryn1 \le ly \le y \le ry \le n 的单元格 ax,ya_{x,y} 构成的网格。

输入
每个测试包含多个测试用例。第一行包含测试用例数 tt1t5001 \le t \le 500)。
每个测试用例的描述如下:
第一行包含两个整数 nnkk1n,k5001 \le n, k \le 500)—— 网格的列数和整数的取值范围。
接下来两行,第 ii 行包含 nn 个整数 ai,1,ai,2,,ai,na_{i,1}, a_{i,2}, \dots, a_{i,n}1ai,jk-1 \le a_{i,j} \le kai,j0a_{i,j} \neq 0)—— 网格第 ii 行的值,其中 1-1 表示空单元格。

保证所有测试用例的 nn 之和不超过 500500


输出
对于每个测试用例,输出一个整数 —— 满足上述条件的填充方式数,对 998244353998244353 取模。


样例
输入

3
4 3
2 1 -1 2
2 -1 1 3
5 4
1 3 -1 4 2
-1 3 4 2 -1
10 10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1

输出

6
64
123782927

说明
在第一个测试用例中,满足条件的网格为:

$$\begin{bmatrix} 2 & 1 & 1 & 2 \\ 2 & 1 & 1 & 3 \end{bmatrix},\quad \begin{bmatrix} 2 & 1 & 2 & 2 \\ 2 & 1 & 1 & 3 \end{bmatrix},\quad \begin{bmatrix} 2 & 1 & 3 & 2 \\ 2 & 1 & 1 & 3 \end{bmatrix},\quad \begin{bmatrix} 2 & 1 & 2 & 2 \\ 2 & 1 & 2 & 3 \end{bmatrix},\quad \begin{bmatrix} 2 & 1 & 3 & 2 \\ 2 & 1 & 2 & 3 \end{bmatrix},\quad \begin{bmatrix} 2 & 1 & 3 & 2 \\ 2 & 1 & 3 & 3 \end{bmatrix}. $$

在第二个测试用例中,所有填充方式均满足条件。