#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,m,i,x,a[1000005][2],ans=1,cnt1=0,cnt2=0,sum=0;
const ll mod=1e9+7;
int main()
{
	scanf("%lld%lld",&n,&m);
	for(i=1;i<=n;i++)
	{
		scanf("%lld",&x);
		a[x][0]++;
	}
	for(i=1;i<=m;i++)
	{
		scanf("%lld",&x);
		a[x][1]++;
	}
	for(i=n*m;i>0;i--)
	{
		if(a[i][0]>1||a[i][1]>1)
		{
			printf("0\n");
			return 0;
		}
		if(a[i][0]==0)
		{
			if(a[i][1]==0)
			{
				if(sum>0)ans=ans*sum%mod;
				else
				{
					printf("0\n");
					return 0;
				}
			}
			else
			{
				if(cnt1>0)ans=ans*cnt1%mod;
				else
				{
					printf("0\n");
					return 0;
				}
			}
		}
		else
		{
			if(a[i][1]==0)
			{
				if(cnt2>0)ans=ans*cnt2%mod;
				else
				{
					printf("0\n");
					return 0;
				}
			}
		}
		if(a[i][0])cnt1++,sum+=cnt2;
		if(a[i][1])cnt2++,sum+=cnt1;
		sum--;
	}
	printf("%lld\n",ans);
	return 0;
}