#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
int main() {
  int h, w;
  cin >> h >> w;
  vector<vector<char>> v(h);
  vector<char> v2(w, '*');
  for (int i = 0; i < h; i++) v[i] = v2;
  for (int i = 0; i < h; i++) {
    int x;
    cin >> x;
    for (int j = 0; j < x; j++) v[i][j] = 'b';
    if (x < w) v[i][x] = 'w';
  }
  for (int i = 0; i < w; i++) {
    int x;
    cin >> x;
    for (int j = 0; j < x; j++) {
      if (v[j][i] == 'w') {
        cout << 0;
        return 0;
      }
      v[j][i] = 'b';
    }
    if (x < h) {
      if (v[x][i] == 'b') {
        cout << 0;
        return 0;
      }
      v[x][i] = 'w';
    }
  }
  int ans = 0;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++)
      if (v[i][j] == '*') ans++;
  }
  long long res = 1;
  for (int i = 0; i < ans; i++) {
    res = (res * 2) % mod;
  }
  cout << res;
  return 0;
}
