#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
int n;
int a[1000010], b[1000001];
int k[1000001];
int s = 1e9;
int id;
signed main(void) {
// freopen("hole.in","r",stdin);
// freopen("hole.out","w",stdout);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> b[i];
for (int i = 1; i <= n; i++) {
s = min(max(a[i] - b[i], b[i] - 1), s);
k[i] = min(a[i] - b[i], b[i] - 1);
}
sort(k + 1, k + 1 + n, greater<int>());
int cnt = 1, ans = 0;
for (int i = 1; i <= n; i++) {
if (k[i] >= s) {
cnt *= 2;
cnt %= mod;
} else {
id = i - 1;
break;
}
}
ans += (s - k[id + 1]) * cnt;
ans %= mod;
for (int i = id + 1; i <= n; i++) {
cnt *= 2;
cnt %= mod;
ans += (abs(k[i] - k[i + 1])) * cnt;
}
cout << (ans + 1) % mod;
return 0;
}
/*
20
7 8 5 8 5 8 7 8 7 8 8 5 7 9 7 5 6 10 9 10
4 4 1 1 4 1 5 6 3 3 7 1 6 4 6 1 2 5 8 6
20
113083296 470087242 953056928 438470121 197734128 65932680 939888351 426001826 699939681 679070707 66342374 606714676 473087985 166448649 690895304 964838988 855721828 450618508 168776312 316139107
91395676 162578966 236918145 174732250 72265370 65710453 515526056 142885164 430899279 328214956 4611305 478854485 308252150 124719962 295962933 56861465 702237934 243046794 158523725 258371042
*/
怀疑驱魔炸了()