output_description: Print the number of ways to write the numbers under the conditions, modulo
  10^9 + 7.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
      A_1 A_2 ... A_{N}
      B_1 B_2 ... B_{M}
attempt: import sys
  
  readline = sys.stdin.readline
  MOD = 10**9 + 7
  INF = float("INF")
  sys.setrecursionlimit(10**5)
  
  
  def main():
      N, M = map(int, readline().split())
      A = list(map(int, readline().split()))
      B = list(map(int, readline().split()))
  
      A_idx = dict()
      B_idx = dict()
  
      for i, x in enumerate(A, 1):
          A_idx[x] = i
  
      for i, x in enumerate(B, 1):
          B_idx[x] = i
  
      grid = [[0] * (M + 1) for _ in range(N + 1)]
  
      def calc():
          ans = 1
          cnt_r = 0
          cnt_c = 0
  
          for i in range(N * M, 0, -1):
              row = A_idx.get(i)
              col = B_idx.get(i)
              cnt = 0
  
              if row and col:
                  cnt_r += 1
                  cnt_c += 1
                  if grid[row][col]:
                      return 0
                  else:
                      grid[row][col] = i
                      cnt = 1
              elif row:
                  cnt_r += 1
                  for j in range(M):
                      if B[j] > i and not (grid[row][j]):
                          cnt += 1
              elif col:
                  cnt_c += 1
                  for j in range(N):
                      if A[j] > i and not (grid[j][col]):
                          cnt += 1
              else:
                  cnt = cnt_r * cnt_c - (N * M - i)
              ans *= cnt
              ans %= MOD
          return ans
  
      ans = calc()
      print(ans)
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  Consider writing each of the integers from 1 to N \times M in a grid with N
  rows and M columns, without duplicates. Takahashi thinks it is not fun enough,
  and he will write the numbers under the following conditions:
  
    * The largest among the values in the i-th row (1 \leq i \leq N) is A_i.
    * The largest among the values in the j-th column (1 \leq j \leq M) is B_j.
  
  For him, find the number of ways to write the numbers under these conditions,
  modulo 10^9 + 7.
samples: [{"input": "2 2\n    4 3\n    3 4", "output": "2\n    \n\n(A_1, A_2) = (4, 3) and (B_1, B_2) = (3, 4). In this case, there are two ways\nto write the numbers, as follows:\n\n  * 1 in (1, 1), 4 in (1, 2), 3 in (2, 1) and 2 in (2, 2).\n  * 2 in (1, 1), 4 in (1, 2), 3 in (2, 1) and 1 in (2, 2).\n\nHere, (i, j) denotes the square at the i-th row and the j-th column.\n\n* * *"}, {"input": "3 3\n    5 9 7\n    3 6 9", "output": "0\n    \n\nSince there is no way to write the numbers under the condition, 0 should be\nprinted.\n\n* * *"}, {"input": "2 2\n    4 4\n    4 4", "output": "0\n    \n\n* * *"}, {"input": "14 13\n    158 167 181 147 178 151 179 182 176 169 180 129 175 168\n    181 150 178 179 167 180 176 169 182 177 175 159 173", "output": "343772227"}]