#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=1e5+5;
const int MOD=1e9+7;
int n;
int h[N],w[N];
ll ans=0,sum=0;
vector<pair<ll,ll>> st; // (h, w)
ll choose2(ll x){
x%=MOD;
return (x*(x-1)/2)%MOD;
}
pair<ll,ll> pop(){
auto [h,w]=st.back();
st.pop_back();
sum=(sum-choose2(h+1)*w%MOD+MOD)%MOD;
return {h,w};
}
void push(ll h,ll w){
st.push_back({h,w});
sum=(sum+choose2(h+1)*w%MOD)%MOD;
}
int main(){
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n;
for(int i=1;i<=n;i++){
cin >> h[i];
}
for(int i=1;i<=n;i++){
cin >> w[i];
}
for(int i=1;i<=n;i++){
ans=(ans+choose2(h[i]+1)*choose2(w[i]+1)%MOD)%MOD;
}
for(int i=1;i<=n;i++){
ll len=0;
while(!st.empty()&&h[i]<st.back().first){
auto [hh,ww]=pop();
len=(len+ww)%MOD;
}
push(h[i],len);
ans=(ans+w[i]*sum%MOD)%MOD;
push(h[i],w[i]);
}
cout << ans << "\n";
}