#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
int n,m,a[1005],b[1005];
bool check()
{
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
        if(a[i]==a[j]) return false;
    for(int i=1;i<=m;i++)
        for(int j=i+1;j<=m;j++)
        if(b[i]==b[j]) return false;
    return true;
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<=m;i++) scanf("%d",&b[i]);
    sort(a+1,a+1+n);
    sort(b+1,b+1+m);
    if(!check()) printf("0\n");
    else
    {
        a[n+1]=n+1;
        b[m+1]=m+1;
        int l[2]={0,0};
        ll ans=1;
        for(int i=1;i<=n*m;i++)
        {
            while(l[0]<=n&&a[l[0]]<i) l[0]++;
            while(l[1]<=m&&b[l[1]]<i) l[1]++;
            ll d=0;
            if(a[l[0]]==i&&b[l[1]]==i) d=1;
            else if(a[l[0]]==i) d=m-l[1]+1;
            else if(b[l[1]]==i) d=n-l[0]+1;
            else d=(m-l[1]+1)*(n-l[0]+1)-(n*m-i);
            ans=ans*d%mod;
        }
        printf("%lld\n",ans);
    }
}
