AT_arc228_a [ARC228A] Row and Col swap
Description
$ (1,2,\dots,N) $ の順列 $ P=(P_1,P_2,\dots,P_N),Q=(Q_1,Q_2,\dots,Q_N) $ が与えられます。
$ P,Q $ に対して、以下の操作のいずれか一つを選び行うことを $ M $ 回繰り返します。
- $ 1 \le i < j \le N $ を満たす整数 $ i,j $ を選び、 $ P_i,P_j $ を入れ替える。
- $ 1 \le i < j \le N $ を満たす整数 $ i,j $ を選び、 $ Q_i,Q_j $ を入れ替える。
- $ 1 \le i \le N $ を満たす整数 $ i $ を選び、 $ P_i,Q_i $ を入れ替える。
$ M $ 回の操作終了後に $ P,Q $ がいずれも $ (1,2,\dots,N) $ の順列になるような操作列の個数を $ 998244353 $ で割った余りを求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ P_1\ P_2\ \dots\ P_N $ $ Q_1\ Q_2\ \dots\ Q_N $
Output Format
答えを出力せよ。
Explanation/Hint
### Sample Explanation 1
例えば、以下のような操作列は条件を満たします。
- $ 3 $ 種類目の操作で $ i = 1 $ を選び、 $ P_1,Q_1 $ を入れ替える。 $ P=(1,2,3),Q=(1,3,2) $ となる。
$ P $ の要素同士を入れ替える $ 3 $ 通りの操作と、 $ Q $ の要素同士を入れ替える $ 3 $ 通りの操作と、上記の $ P_1,Q_1 $ を入れ替える操作の合計 $ 7 $ 通りの操作いずれかひとつからなる操作列が条件を満たします。
### Constraints
- $ 1 \le N,M \le 500 $
- $ P,Q $ は $ (1,2,\dots,N) $ の順列
- 入力される値は全て整数