#arc107c. [arc107_c]Shuffle Permutation

[arc107_c]Shuffle Permutation

問題文

NtimesNN \\times N の行列と、整数 KK が与えられます。この行列の ii 行目、jj 列目の値を ai,ja_{i, j} とします。この行列は、 1,2,dots,N21, 2, \\dots, N^2 をちょうど一つずつ要素に含みます。

sigma くんは、以下の 22 種類の操作を、好きな順序で 好きな回数 行えます。

  • 全ての ii (1leqileqN1 \\leq i \\leq N) について ai,x+ai,yleqKa_{i, x} + a_{i, y} \\leq K を満たす x,y(1leqx<yleqN)x, y(1 \\leq x < y \\leq N) を選び、行列の x,yx, y 列目をswapする。
  • 全ての ii (1leqileqN1 \\leq i \\leq N) について ax,i+ay,ileqKa_{x, i} + a_{y, i} \\leq K を満たす x,y(1leqx<yleqN)x, y(1 \\leq x < y \\leq N) を選び、行列の x,yx, y 行目をswapする。

最終的に得られる行列は何種類存在するでしょうか? bmod998244353\\bmod 998244353 で答えてください。

制約

  • 1leqNleq501 \\leq N \\leq 50
  • 1leqKleq2timesN21 \\leq K \\leq 2 \\times N^2
  • ai,ja_{i, j}1,2,dots,N21, 2, \\dots, 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}

出力

最終的に得られる行列が何種類存在するかを bmod998244353\\bmod 998244353 で出力せよ。


入力例 1

3 13
3 2 7
4 8 9
1 6 5

出力例 1

12

例えば x=1,y=2x = 1, y = 2 として列ベクトルを swap でき、以下のようになります。

2 3 7
8 4 9
6 1 5

その後更に x=1,y=3x = 1, y = 3 として行ベクトルを swap でき、以下のようになります。

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