//              +-- -- --++-- +-In the name of ALLAH-+ --++-- -- --+              \\

#include <bits/stdc++.h>

#define F first
#define S second
#define _sz(x) (int)x.size()

using namespace std ;
using ll = long long ;
using ld = long double ;
using pii = pair <int , int> ;

int const N = 1000 + 20 , mod = 1e9 + 7 ;
int n , m , a[N] , b[N] ;
int ans = 1 ;

int main(){
	ios::sync_with_stdio(false) , cin.tie(0) , cout.tie(0) ;

	cin >> n >> m ;

	for (int i = 0 ; i < n ; i ++) cin >> a[i] ;
	for (int i = 0 ; i < m ; i ++) cin >> b[i] ;

	sort(a , a + n , greater<int>()) ;
	sort(b , b + m , greater<int>()) ;

	int p1 = 0 , p2 = 0 ;
	for (int x = n * m ; x >= 1 ; x --) {
		bool f1 = (p1 < n) && (a[p1] == x) ;
		bool f2 = (p2 < m) && (b[p2] == x) ;

		if (f1 && f2) p1 ++ , p2 ++ ;
		else if (f1) {
			ans = 1ll * ans * p2 % mod ;
			p1 ++ ;
		}
		else if (f2) {
			ans = 1ll * ans * p1 % mod ;
			p2 ++ ;
		}
		else ans = 1ll * ans * (p1 * p2 - (n * m - x)) % mod ;
	}

	cout << ans << '\n' ;
}
