AT_arc188_d [ARC188D] Mirror and Order

Description

[problemUrl]: https://atcoder.jp/contests/arc188/tasks/arc188_d あなたは、以下の条件を満たすように、長さ $ 3 $ の数列を $ N $ 個作ります。 - $ k=1,2,3 $ の全てに対して、次の条件が成り立つ - 各数列の $ k $ 項目を集めたとき、$ 1 $ から $ N $ までの整数がちょうど $ 1 $ 回ずつ現れる この数列の列に対して、以下のように数列 $ a=(a_1,a_2,\ \ldots\ ,a_N),\ b=(b_1,b_2,\ldots\ ,b_N) $ を定義します。 - $ i $ 番目の数列を $ s_i $ 、$ i $ 番目の数列を逆順にしたものを $ t_i $ とし、これらを全て辞書順に並べた時、$ s_i $ が $ a_i $ 番目、$ t_i $ が $ b_i $ 番目である - ただし、$ 2N $ 個の数列の中に同一の数列が $ 2 $ 個以上存在する場合には、$ a,\ b $ は定義されない したがって、$ a,\ b $ が定義される場合には、$ a $ と $ b $ を合わせた数列には $ 1 $ から $ 2N $ までの整数がちょうど $ 1 $ 回ずつ現れます。 長さ $ N $ の数列 $ A,B $ が与えられます。ただし、$ A $ の各項は $ 1 $ 以上 $ 2N $ 以下の整数であり、$ B $ の各項は $ 1 $ 以上 $ 2N $ 以下の整数または $ -1 $ です。 また、$ A $ と $ B $ を合わせた数列には $ -1 $ 以外の整数は $ 1 $ 回以下しか現れません。 $ a,\ b $ が定義され、$ 1 $ 以上 $ N $ 以下のすべての整数 $ i $ に対して - $ a_i\ =\ A_i $ - $ B_i\ \neq\ -1 $ ならば $ b_i\ =\ B_i $ がともに成り立つとき、あり得る数列 $ a,b $ の組は何通りあるでしょうか。 答えを $ 998244353 $ で割った余りを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ B_1 $ $ B_2 $ $ \ldots $ $ B_N $

Output Format

答えを $ 998244353 $ で割った余りを整数で出力せよ。

Explanation/Hint

### 制約 - $ 2\leq\ N\leq\ 3000 $ - $ 1\leq\ A_i\leq\ 2N $ - $ 1\leq\ B_i\leq\ 2N $ または $ B_i=-1 $ - $ A $ と $ B $ を合わせた数列には $ -1 $ 以外の整数は $ 1 $ 回以下しか現れない。つまり、以下が成り立つ - $ i\neq\ j $ のとき $ A_i\neq\ A_j $ - $ i\neq\ j $ かつ $ B_i,B_j\neq\ -1 $ のとき $ B_i\neq\ B_j $ - $ A_i\neq\ B_j $ - 入力される値はすべて整数である ### Sample Explanation 1 例えば、$ 3 $ つの数列を以下のように作った場合を考えます。 1. $ (1,2,3) $ 2. $ (2,1,1) $ 3. $ (3,3,2) $ このとき、$ s_i $ および $ t_i $ を辞書順に並べると、 > $ t_2=(1,1,2)\