#include <bits/stdc++.h>
using namespace std;
long long multiply(long long a, long long b, long long MOD) {
  long long res;
  res = (a % MOD) * (b % MOD);
  res %= MOD;
  return res;
}
long long add(long long a, long long b, long long MOD) {
  long long res = (a % MOD) + (b % MOD);
  res %= MOD;
  if (res < 0LL) res += MOD;
  return res;
}
long long power(long long base, long long exp, long long MOD) {
  long long res = 1;
  while (exp > 0) {
    if (exp % 2 == 1) res = multiply(res, base, MOD);
    base = multiply(base, base, MOD);
    exp /= 2;
  }
  return res % MOD;
}
const long long mod = 1e9 + 7LL;
long long inv(long long n) { return power(n, mod - 2, mod); }
void solve() {
  int n;
  cin >> n;
  vector<long long> l(n), r(n);
  for (int i = 0; i < n; i++) {
    cin >> l[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> r[i];
    r[i]++;
  }
  vector<long long> E(n, 0);
  E[0] = 1;
  for (int i = 1; i < n; i++) {
    long long num = max(0LL, min(r[i], r[i - 1]) - max(l[i], l[i - 1]));
    long long den = (r[i] - l[i]) * (r[i - 1] - l[i - 1]);
    num = den - num;
    E[i] = multiply(num, inv(den), mod);
  }
  vector<long long> suffE(n, 0);
  for (int i = n - 1; i >= 0; i--) {
    if (i == n - 1) {
      suffE[i] = E[i];
    } else {
      suffE[i] = add(E[i], suffE[i + 1], mod);
    }
  }
  long long ans = 0;
  for (int i = 0; i + 2 < n; i++) {
    ans = add(ans, multiply(E[i], suffE[i + 2], mod), mod);
  }
  ans = multiply(2LL, ans, mod);
  for (int i = 0; i < n; i++) {
    ans = add(ans, E[i], mod);
  }
  long long temp = 0;
  for (int i = 2; i < n; i++) {
    long long num = max(
        0LL, min({r[i], r[i - 1], r[i - 2]}) - max({l[i], l[i - 1], l[i - 2]}));
    long long den =
        multiply(r[i] - l[i],
                 multiply(r[i - 1] - l[i - 1], r[i - 2] - l[i - 2], mod), mod);
    long long prob = E[i] + E[i - 1] - 1;
    prob = add(prob, multiply(num, inv(den), mod), mod);
    temp = add(temp, prob, mod);
  }
  temp = multiply(2LL, temp, mod);
  ans = add(ans, temp, mod);
  if (n > 1) ans = add(ans, add(E[1], E[1], mod), mod);
  cout << ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  while (t--) solve();
  return 0;
}
