#agc057e. [agc057_e]RowCol/ColRow Sort

[agc057_e]RowCol/ColRow Sort

問題文

HtimesWH\\times W 行列 A=(Ai,j)A = (A_{i,j}) (1leqileqH,1leqjleqW1\\leq i\\leq H, 1\\leq j\\leq W) に対して、次の操作を考えます。

  • 行ソート:すべての行を昇順にソートする。つまり、すべての ii に対して Ai,1,ldots,Ai,WA_{i,1},\\ldots,A_{i,W} を昇順にソートする。
  • 列ソート:すべての列を昇順にソートする。つまり、すべての jj に対して A1,j,ldots,AH,jA_{1,j},\\ldots,A_{H,j} を昇順にソートする。

HtimesWH\\times W 行列 B=(Bi,j)B = (B_{i,j}) が与えられます。次の 22 条件をともに満たす HtimesWH\\times W 行列 AA の総数を 998244353998244353 で割った余りを求めてください。

  • AA に対して行ソート、列ソートをこの順に行った結果は BB に一致する。
  • AA に対して列ソート、行ソートをこの順に行った結果は BB に一致する。

制約

  • 1leqH,Wleq15001\\leq H, W\\leq 1500
  • 0leqBi,jleq90\\leq B_{i,j}\\leq 9
  • 任意の 1leqileqH1\\leq i\\leq H および 1leqjleqW11\\leq j\\leq W - 1 に対して Bi,jleqBi,j+1B_{i,j}\\leq B_{i,j+1}
  • 任意の 1leqjleqW1\\leq j\\leq W および 1leqileqH11\\leq i\\leq H - 1 に対して Bi,jleqBi+1,jB_{i,j}\\leq B_{i+1,j}
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

HH WW B1,1B_{1,1} B1,2B_{1,2} ldots\\ldots B1,WB_{1,W} vdots\\vdots BH,1B_{H,1} BH,2B_{H,2} ldots\\ldots BH,WB_{H,W}

出力

条件を満たす行列 AA の総数を 998244353998244353 で割った余りを出力してください。


入力例 1

2 2
0 0
1 2

出力例 1

4

条件を満たす行列は次の 44 つです:\\begin{pmatrix}0&0\\\\1&2\\end{pmatrix}, \\begin{pmatrix}0&0\\\\2&1\\end{pmatrix}, \\begin{pmatrix}1&2\\\\0&0\\end{pmatrix}, \\begin{pmatrix}2&1\\\\0&0\\end{pmatrix}.

例えば、\\begin{pmatrix}2&1\\\\0&0\\end{pmatrix} が条件を満たすことは次のように確かめられます。

  • 行ソート、列ソートをこの順に行う場合:$\\begin{pmatrix}2&1\\\\0&0\\end{pmatrix}\\to \\begin{pmatrix}1&2\\\\0&0\\end{pmatrix} \\to \\begin{pmatrix}0&0\\\\1&2\\end{pmatrix}$.

  • 列ソート、行ソートをこの順に行う場合:$\\begin{pmatrix}2&1\\\\0&0\\end{pmatrix}\\to \\begin{pmatrix}0&0\\\\2&1\\end{pmatrix} \\to \\begin{pmatrix}0&0\\\\1&2\\end{pmatrix}$.


入力例 2

3 3
0 1 3
2 4 7
5 6 8

出力例 2

576

例えば $\\begin{pmatrix}5&7&6\\\\3&0&1\\\\4&8&2\\end{pmatrix}$ が条件を満たします。このことは次のように確かめられます。

  • 行ソート、列ソートをこの順に行う場合:$\\begin{pmatrix}5&7&6\\\\3&0&1\\\\4&8&2\\end{pmatrix}\\to \\begin{pmatrix}5&6&7\\\\0&1&3\\\\2&4&8\\end{pmatrix} \\to \\begin{pmatrix}0&1&3\\\\2&4&7\\\\5&6&8\\end{pmatrix}$.

  • 列ソート、行ソートをこの順に行う場合:$\\begin{pmatrix}5&7&6\\\\3&0&1\\\\4&8&2\\end{pmatrix}\\to \\begin{pmatrix}3&0&1\\\\4&7&2\\\\5&8&6\\end{pmatrix} \\to \\begin{pmatrix}0&1&3\\\\2&4&7\\\\5&6&8\\end{pmatrix}$.


入力例 3

3 5
0 0 0 1 1
0 0 1 1 2
0 1 1 2 2

出力例 3

10440

入力例 4

1 7
2 3 3 6 8 8 9

出力例 4

1260