#include <bits/stdc++.h>
using namespace std;
#define modulo 1000000007
#define mod(mod_x) ((((long long)mod_x+modulo))%modulo)
#define Inf 100000000




int main(){
	int N,M;
	cin>>N>>M;
	
	int safe_A = 0;
	int safe_B = 0;
	
	set<int> A,B;
	
	for(int i=0;i<N;i++){
		int a;
		cin>>a;
		A.insert(a);
	}
	
	for(int i=0;i<M;i++){
		int b;
		cin>>b;
		B.insert(b);
	}
	
	int ans = 1;
	
	for(int i=N*M;i>=1;i--){
		bool fa=A.count(i),fb=B.count(i);
		int ind = N*M-i;
		if(fa&&fb){
			safe_A++;
			safe_B++;
		}
		else if(fa){
			safe_A++;
			ans = mod(ans*safe_B);
		}
		else if(fb){
			safe_B ++;
			ans = mod(ans * safe_A);
		}
		else{
			ans = mod(ans * mod(safe_A*safe_B-ind));
		}
		
	}
	
	cout<<ans<<endl;
			
		
	
	return 0;
}
