AT_arc107_c [ARC107C] Shuffle Permutation
Description
[problemUrl]: https://atcoder.jp/contests/arc107/tasks/arc107_c
$ N\ \times\ N $ の行列と、整数 $ K $ が与えられます。この行列の $ i $ 行目、$ j $ 列目の値を $ a_{i,\ j} $ とします。この行列は、 $ 1,\ 2,\ \dots,\ N^2 $ をちょうど一つずつ要素に含みます。
sigma くんは、以下の $ 2 $ 種類の操作を、好きな順序で **好きな回数** 行えます。
- 全ての $ i $ ($ 1\ \leq\ i\ \leq\ N $) について $ a_{i,\ x}\ +\ a_{i,\ y}\ \leq\ K $ を満たす $ x,\ y(1\ \leq\ x\
Input Format
入力は以下の形式で標準入力から与えられる.
> $ N $ $ K $ $ a_{1,\ 1} $ $ a_{1,\ 2} $ $ ... $ $ a_{1,\ N} $ $ a_{2,\ 1} $ $ a_{2,\ 2} $ $ ... $ $ a_{2,\ N} $ $ : $ $ a_{N,\ 1} $ $ a_{N,\ 2} $ $ ... $ $ a_{N,\ N} $
Output Format
最終的に得られる行列が何種類存在するかを $ \bmod\ 998244353 $ で出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 50 $
- $ 1\ \leq\ K\ \leq\ 2\ \times\ N^2 $
- $ a_{i,\ j} $ は $ 1,\ 2,\ \dots,\ N^2 $ の並び替え
- 入力される数は全て整数である。
### Sample Explanation 1
例えば $ x\ =\ 1,\ y\ =\ 2 $ として列ベクトルを swap でき、以下のようになります。 ``` 2 3 7 8 4 9 6 1 5 ``` その後更に $ x\ =\ 1,\ y\ =\ 3 $ として行ベクトルを swap でき、以下のようになります。 ``` 6 1 5 8 4 9 2 3 7 ```