#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
const int N = 1e5 + 40, MOD = 1000000007;
int a[2][N];
int main()
{
int n;
cin >> n;
int ma, mb;
cin >> ma;
for (int i = 0; i < ma; i++)cin >> a[0][i];
cin >> mb;
for (int i = 0; i < mb; i++)cin >> a[1][i];
long long ans = 0;
long long base = 1;
for (int i = ma - 1, j = mb - 1; i >= 0|| j >=0; i--,j--)
{
//每一位上的数字是多少,超出就取0
int ta, tb;
if (i >= 0) ta = a[0][i];
else ta = 0;
if (j >= 0) tb = a[1][j];
else tb = 0;
//求每一位上的答案
ans += (long long)((ta - tb) * base + MOD) % MOD;
//进制尾数,每一位都是前面的累乘
int t;
t = max(ta, tb) + 1;
if (t < 2) t = 2;
else if (t > n) t = n;
base = (base * t) % MOD;
}
ans = (ans + MOD) % MOD;
cout << ans;
return 0;
}