#include #define rep(i,a,b) for(int i=a;i<(b);++i) #define erep(i,a,b) for(int i=a;i<=(int)(b);++i) #define per(i,a,b) for(int i=(a);i>(b);--i) #define eper(i,a,b) for(int i=(a);i>=b;--i) #define fore(x, a) for(auto &x : a) #define pb push_back #define mp make_pair #define INF 100100100100 #define inf 2001001001 #define MOD 1000000007 #define ALL(x) begin(x),end(x) #define F first #define S second using namespace std; using ll = long long; using pii = pair; using vii = vector; using vll = vector; templateusing vv = vector; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (bvoid show(const vector &a) { for (int i = 0; i < (int)a.size(); ++i) cout << a[i] << (i != (int)a.size()-1 ? " " : "\n"); } templateT gcd(T a, T b){ return b ? gcd(b, a % b) : a; } templateT lcm(T a, T b){ return a / gcd(a, b) * b; } int dy[]={0, 1, -1, 0}; int dx[]={1, 0, 0, -1}; int n; int main() { cin.tie(0); ios::sync_with_stdio(false); cin >> n; vll a(n+1), b(n+1); ll sum = 0; rep(i, 0, n+1) { cin >> a[i]; sum += a[i]; } rep(i, 0, n+1) cin >> b[i]; ll ans = 0; rep(i, 0, n+1) { ans += sum * b[i] % MOD; ans %= MOD; sum -= a[n-i]; } cout << ans % MOD << endl; return 0; }