蔡德仁和艾莉芬正在玩游戏。
她们有一个 $n\times n$ 的网格棋盘,每个格子上可能有一块积木,也可能是空的。
积木有 $k$ 种可能的颜色。玩家可以做的一次操作是选上下左右四个方向之一倾斜棋盘,然后所有积木就会向那个方向滑到头,直到碰到边缘或者其它积木。
可以用一个矩阵表示棋盘状态,$1$ 到 $k$ 分别表示该位置有对应颜色的积木,$0$ 表示该位置没有积木。
这是一个例子,是同一个局面分别做上下左右四个方向操作的结果:
020 002 || 020 321 || 020 200 || 020 000 ||
301 [→] 031 || 301 [↑] 012 || 301 [←] 310 || 301 [↓] 021 ||
012 012 || 012 000 || 012 120 || 012 312 ||
现在蔡德仁和艾莉芬开始了游戏。游戏规则如下:
首先艾莉芬在棋盘上放置一些积木,这时候所有积木都没有涂色。
然后蔡德仁可以对棋盘进行任意次操作,然后交给艾莉芬再进行任意次操作,之后棋盘会进行左、下两次操作把所有积木收拢到左下角。
然后艾莉芬可以对棋盘上的积木进行涂色。
然后蔡德仁可以对棋盘进行任意次操作,然后交给艾莉芬再进行任意次操作,之后棋盘会进行左、下两次操作把所有积木收拢到左下角。
现在已知全部操作完毕之后棋盘的最终状态。(以上的任意次操作都可以是 $0$ 次)
艾莉芬有些好奇,她想知道她有多少种放置积木和涂色的方案满足,无论蔡德仁如何操作,艾莉芬都有办法能达到这个最终状态。
两种方案不同,当且仅当艾莉芬放置积木后(第 1 步结束)的棋盘状态不同(这时只考虑积木所在的位置集合)或者涂色后(第 3 步结束)的棋盘状态不同。
她知道这个答案可能很大,所以她想请你算出答案对 $998244353$ 取模的结果。
输入格式
第一行两个正整数 $n,k$,表示棋盘大小和颜色数。
接下来 $n$ 行每行 $n$ 个 $0$ 到 $k$ 的整数,空格分隔,表示最终的棋盘状态。其中第 $i$ 行第 $j$ 个数表示从上到下第 $i$ 行从左到右第 $j$ 列的状态。
输出格式
输出一行一个整数表示答案,即满足无论蔡德仁如何操作,艾莉芬都有办法能达到这个最终状态的初始棋盘种类数,答案对 $998244353$ 取模。
样例
样例 1
input
3 2 1 2 0 1 2 0 1 1 0
output
3
explanation
三种可能的初始状态分别为:
1 2 0 1 2 0 1 1 0
0 1 2 0 1 2 0 1 1
1 0 2 1 0 2 1 0 1
样例 2~5
见下发文件中的 ex_board*.in/out
。
其中样例 2 满足子任务 2 的限制,样例 3 满足子任务 4 的限制,样例 4 满足子任务 5 的限制,样例 5 满足子任务 7 的限制。
数据范围与提示
对于所有数据,保证:$1 \le n, k \le 1000$,且输入给出的最终状态一定位于棋盘左下角。
本题采用子任务捆绑测试。
子任务编号 | 分值 | $n \le$ | $k \le$ | 额外限制 |
---|---|---|---|---|
$1$ | $10$ | $4$ | $1$ | |
$2$ | $10$ | $50$ | $1$ | 最终状态为严格阶梯(第 $i$ 行不为 $0$ 的恰好是前 $i$ 个数) |
$3$ | $10$ | $50$ | $1$ | |
$4$ | $10$ | $1000$ | $1$ | |
$5$ | $10$ | $50$ | $1000$ | 最终状态为严格矩形(存在常数 $x,y$ 使得所有非 $0$ 的恰好是行号 $\ge x$,列号 $\le y$ 的数) |
$6$ | $20$ | $50$ | $1000$ | |
$7$ | $30$ | $1000$ | $1000$ |
时间限制:$1\texttt{s}$
空间限制:$512\texttt{MB}$