AT_agc021_f [AGC021F] Trinity

Description

[problemUrl]: https://atcoder.jp/contests/agc021/tasks/agc021_f 縦 $ N $ マス、横 $ M $ マスのマス目があります。$ i $ 行目、$ j $ 列目にあるマスを $ (i,j) $ とあらわすことにします。 特に、一番左上のマスは $ (1,1) $ と、一番右下のマスは $ (N,M) $ とあらわされます。 高橋君は $ 0 $ 個以上のいくつかのマスを黒く、他のマスを白く塗りました。 長さ $ N $ の数列 $ A $ と、長さ $ M $ の数列 $ B,C $ をそれぞれ以下のように定義するとき、列の組 $ (A,B,C) $ としてありうるものの個数を $ 998244353 $ で割った余りを求めてください。 - $ A_i(1\leq\ i\leq\ N) $ は、マス $ (i,j) $ が黒く塗られているような最小の $ j $ (存在しない場合、$ M+1 $) - $ B_i(1\leq\ i\leq\ M) $ は、マス $ (k,i) $ が黒く塗られているような最小の $ k $ (存在しない場合、$ N+1 $) - $ C_i(1\leq\ i\leq\ M) $ は、マス $ (k,i) $ が黒く塗られているような最大の $ k $ (存在しない場合、$ 0 $)

Input Format

N/A

Output Format

N/A

Explanation/Hint

### 注意 この問題では、提出できるソースコードのサイズは $ 20000 $ B 以下に制限される。 制限を超える長さの提出は無効とするので注意すること。 ### 制約 - $ 1\ \leq\ N\ \leq\ 8000 $ - $ 1\ \leq\ M\ \leq\ 200 $ - $ N,M $ は整数である ### 部分点 - $ N\leq\ 300 $ を満たすデータセットに正解すると、$ 1500 $ 点が与えられる。 ### Sample Explanation 1 $ N=2 $ なので、$ B_i,C_i $ の情報から、各列の黒く塗られたマスの配置が一意に定まります。各 $ i $ について、$ (B_i,C_i) $ の組は $ (1,1),(1,2),(2,2),(3,0) $ の $ 4 $ 通りなので、答えは $ 4^M=64 $ 通りです。