#arc107c. [arc107_c]Shuffle Permutation

[arc107_c]Shuffle Permutation

题目描述

给定一个 N×NN \times N 的矩阵和一个整数 KK。记第 ii 行第 jj 列的矩阵元素为 ai,ja_{i, j}。该矩阵包含 1,2,...,N21, 2, ..., N^2N2N^2 个数,每个数恰好出现一次。

Sigma 可以任意多次、任意顺序地使用以下两种操作:

  • 挑选两个满足对所有的 ii (1iN1 \leq i \leq N) 都有 ai,x+ai,yKa_{i, x} + a_{i, y} \leq K 的整数 x,y(1x<yN)x, y (1 \leq x < y \leq N),交换第 xx 列和第 yy 列的位置。
  • 挑选两个满足对所有的 ii (1iN1 \leq i \leq N) 都有 ax,i+ay,iKa_{x, i} + a_{y, i} \leq K 的整数 x,y(1x<yN)x, y (1 \leq x < y \leq N),交换第 xx 行和第 yy 行的位置。

求 Sigma 可以通过这些操作得到的矩阵的数量(对 998244353998244353 取模)。

约束条件

  • 1N501 \leq N \leq 50
  • 1K2×N21 \leq K \leq 2 \times N^2
  • ai,ja_{i, j}1,2,...,N21, 2, ..., N^2 的一个排列。
  • 输入中的所有数字均为整数。

输入

从标准输入读入输入数据的格式如下:

NN KK a1,1a_{1, 1} a1,2a_{1, 2} ...... a1,Na_{1, N} a2,1a_{2, 1} a2,2a_{2, 2} ...... a2,Na_{2, N} :: aN,1a_{N, 1} aN,2a_{N, 2} ...... aN,Na_{N, N}

输出

打印 Sigma 可以通过操作得到的矩阵的数量(对 998244353998244353 取模)。

示例输入 1

3 13
3 2 7
4 8 9
1 6 5

示例输出 1

12

例如,Sigma 可以交换两列,设 x=1,y=2x = 1, y = 2。交换后得到的矩阵为:

2 3 7
8 4 9
6 1 5

此后,他可以交换两行向量,设 x=1,y=3x = 1, y = 3,得到的矩阵为:

6 1 5
8 4 9
2 3 7

示例输入 2

10 165
82 94 21 65 28 22 61 80 81 79
93 35 59 85 96 1 78 72 43 5
12 15 97 49 69 53 18 73 6 58
60 14 23 19 44 99 64 17 29 67
24 39 56 92 88 7 48 75 36 91
74 16 26 10 40 63 45 76 86 3
9 66 42 84 38 51 25 2 33 41
87 54 57 62 47 31 68 11 83 8
46 27 55 70 52 98 20 77 89 34
32 71 30 50 90 4 37 95 13 100

示例输出 2

348179577