rt
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read() {
ll f = 1, x = 0;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
inline void write(ll x) {
if (x < 0) x = -x, putchar('-');
if (x > 9) write(x/10);
putchar('0'+x%10);
}
inline void writeln(ll x) {
write(x);
putchar('\n');
}
const ll mod = 1e9+7;
ll n, ans;
ll a[500005], b[500005], A[500005], B[500005], F[500005], Fa[500005], Fb[500005];
int main() {
n = read();
for (int i = 1; i <= n; i ++) a[i] = (read())%mod, A[i] = (A[i-1] + a[i])%mod;
for (int i = 1; i <= n; i ++) b[i] = (read())%mod, B[i] = (B[i-1] + b[i])%mod;
for (int i = 1; i <= n; i ++) {
F[i] = (F[i-1] + (A[i]*B[i])%mod)%mod;
Fa[i] = (Fa[i-1] + A[i])%mod;
Fb[i] = (Fb[i-1] + B[i])%mod;
}
for (int i = 1; i <= n; i ++) {
ans += F[n] - F[i-1] - (A[i-1]*((Fb[n]-Fb[i-1])%mod))%mod - (B[i-1]*((Fa[n]-Fa[i-1])%mod))%mod + ((n-i+1)%mod*(A[i-1]*B[i-1]%mod))%mod;
ans += mod;
ans %= mod;
}
write(ans);
return 0;
}