#include <cstdio>

const int MAXN = 200000, MOD = 1000000007;

typedef long long ll;

int n, b[MAXN], v[MAXN], d[MAXN][10];

int main() {
	scanf("%d", &n);
	
	for(int i = 0; i < n; ++i)
		scanf("%d", b + i);
	
	for(int i = 0; i < n - 1; ++i)
		scanf("%d", v + i);
	
	d[0][0] = b[0];
	d[0][1] = ((ll)b[0] + v[0]) % MOD;
	d[1][0] = ((ll)b[1] * d[0][1] % MOD + (ll)v[0] * d[0][0] % MOD) % MOD;
	d[1][1] = ((ll)b[1] + v[1]) % MOD * d[0][1] % MOD;
	
	for(int i = 2; i < n; ++i) {
		d[i][0] = ((ll)b[i] * d[i - 1][1] % MOD + (ll)v[i - 1] * d[i - 1][0] % MOD + (ll)v[i - 1] * (v[i - 1] - 1) % MOD * d[i - 2][1] % MOD) % MOD;
		d[i][1] = (((ll)b[i] + v[i]) % MOD * d[i - 1][1] % MOD + ((ll)b[i] + v[i] + v[i - 1]) % MOD * d[i - 1][0] % MOD + (ll)v[i - 1] * (v[i - 1] - 1) % MOD * d[i - 2][1] % MOD) % MOD;
	}
	
	printf("%d\n", d[n - 1][0]);
	
	return 0;
}
