![]()
![]()
#include <cstdio>
#include <iostream>
#define N 500010
#define ll long long
using namespace std;
const int mod = 1e9 + 7;
int n;
ll a[N], b[N], sa[N], sb[N], qz[N], qza[N], qzb[N];
ll read() {
ll s = 0, f = 0; char ch = getchar();
while (!isdigit(ch)) f |= (ch == '-'), ch = getchar();
while (isdigit(ch)) s = s * 10 + (ch ^ 48), ch = getchar();
return f ? -s : s;
}
int main() {
n = read();
for (int i = 1; i <= n; i++)
a[i] = read(), sa[i] = (sa[i - 1] + a[i]) % mod;
for (int i = 1; i <= n; i++)
b[i] = read(), sb[i] = (sb[i - 1] + b[i]) % mod;
for (int i = 1; i <= n; i++) {
qza[i] = (qza[i - 1] + sa[i]) % mod;
qzb[i] = (qzb[i - 1] + sb[i]) % mod;
qz[i] = (sa[i] * sb[i] % mod + qz[i - 1]) % mod;
}
ll ans = 0;
for (int i = 1; i <= n; i++) {
ll sf = (qz[n] - qz[i - 1] + mod) % mod;
ll sy = ((qzb[n] - qzb[i - 1] + mod) % mod * sa[i - 1]) % mod;
ll sq = ((qza[n] - qza[i - 1] + mod) % mod * sb[i - 1]) % mod;
ll sp = ((n - i + 1) * ((sa[i - 1] * sb[i - 1]) % mod)) % mod;
ans = (ans + sf - sy - sq + sp + mod) % mod;
}
cout << ans;
}