#include <bits/stdc++.h>
using namespace std;
long long int c[1010][1010];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long int h, w;
  cin >> h >> w;
  long long int a[h];
  long long int b[w];
  for (int i = 0; i < h; i++) cin >> a[i];
  for (int j = 0; j < w; j++) cin >> b[j];
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < a[i]; j++) c[i][j] = 1;
  }
  for (int i = 0; i < w; i++) {
    for (int j = 0; j < b[i]; j++) c[j][i] = 1;
  }
  int f = 0;
  for (int i = 0; i < h; i++) {
    int g = 0;
    for (int j = 0; j < w; j++) {
      if (c[i][j] == 0)
        break;
      else
        g++;
    }
    if (g != a[i]) {
      f = 1;
      break;
    }
  }
  if (!f) {
    f = 0;
    for (int i = 0; i < w; i++) {
      int g = 0;
      for (int j = 0; j < h; j++) {
        if (c[j][i] == 0)
          break;
        else
          g++;
      }
      if (g != b[i]) {
        f = 1;
        break;
      }
    }
    if (!f) {
      f = 0;
      for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++) {
          if (c[i][j] == 0) {
            if (a[i] < j and b[j] < i) f++;
          }
        }
      }
      long long int g = 1;
      for (int i = 0; i < f; i++) {
        g = g * 2;
        g = g % 1000000007;
      }
      cout << g % 1000000007 << endl;
      return 0;
    }
  }
  cout << "0"
       << "\n";
  cerr << "Time elapsed : " << clock() * 1000.0 / CLOCKS_PER_SEC << "ms"
       << '\n';
  return 0;
}
