AT_keyence2019_d Double Landscape

Description

[problemUrl]: https://atcoder.jp/contests/keyence2019/tasks/keyence2019_d $ N $ 行 $ M $ 列のグリッドに,$ 1 $ から $ N\ \times\ M $ までの整数を重複のないように $ 1 $ つずつ書き込むことを考えます. ここで,普通に書き込むのでは面白くないと思った高橋君は,以下の条件を満たすように数を書き込むことにしました. - $ i $ 行目に書き込まれている値のうち,最大の値は $ A_i $ $ (1\ \leq\ i\ \leq\ N) $ - $ j $ 列目に書き込まれている値のうち,最大の値は $ B_j $ $ (1\ \leq\ j\ \leq\ M) $ 高橋君のために,この条件を満たすような書き込み方の個数を $ 10^9\ +\ 7 $ で割ったあまりを求めてください.

Input Format

入力は以下の形式で標準入力から与えられる. > $ N $ $ M $ $ A_1 $ $ A_2 $ $ ... $ $ A_{N} $ $ B_1 $ $ B_2 $ $ ... $ $ B_{M} $

Output Format

条件を満たすような書き込み方の個数を $ 10^9\ +\ 7 $ で割ったあまりを出力せよ.

Explanation/Hint

### 制約 - $ 1\ \leq\ N\ \leq\ 1000 $ - $ 1\ \leq\ M\ \leq\ 1000 $ - $ 1\ \leq\ A_i\ \leq\ N\ \times\ M $ - $ 1\ \leq\ B_j\ \leq\ N\ \times\ M $ - $ A_i,\ B_j $ は整数 ### Sample Explanation 1 $ (A_1,\ A_2)\ =\ (4,\ 3) $,$ (B_1,\ B_2)\ =\ (3,\ 4) $ であり,この場合は以下の $ 2 $ 通りの書き込み方があります. - $ 1 $ 行 $ 1 $ 列目に $ 1 $,$ 1 $ 行 $ 2 $ 列目に $ 4 $,$ 2 $ 行 $ 1 $ 列目に $ 3 $,$ 2 $ 行 $ 2 $ 列目に $ 2 $ - $ 1 $ 行 $ 1 $ 列目に $ 2 $,$ 1 $ 行 $ 2 $ 列目に $ 4 $,$ 2 $ 行 $ 1 $ 列目に $ 3 $,$ 2 $ 行 $ 2 $ 列目に $ 1 $ ### Sample Explanation 2 どのような書き込み方をしても条件を満たすことができないので,$ 0 $ を出力します.