func_code_string: #include <bits/stdc++.h>   using namespace std;   mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());   const long long maxn = 3e6;   const long long mod = 1e9 + 7;   const long double PI = acos((long double)-1);   long long pw(long long a, long long b, long long md = mod) {     long long res = 1;     while (b) {       if (b & 1) {         res = (a * res) % md;       }       a = (a * a) % md;       b >>= 1;     }     return (res);   }   int n;   long long l[maxn], r[maxn];   int32_t main() {     ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);     cin >> n;     for (int i = 0; i < n; i++) cin >> l[i];     for (int i = 0; i < n; i++) cin >> r[i];     long long p = 1, q = 0, sum = 0, sm = 0;     for (int i = 0; i < n; i++) {       if (i) {         long long a = max(0LL, min(r[i], r[i - 1]) - max(l[i], l[i - 1]) + 1);         long long b = (r[i] - l[i] + 1) * (r[i - 1] - l[i - 1] + 1) % mod;         p = ((b - a + mod) % mod * pw(b, mod - 2)) % mod;       }       sum = (sum + p) % mod;       sm = (sm + pw(p, 2) + (2LL * (p - 1) * (q - 1)) % mod + mod) % mod;       q = p;     }     long long ans = (sum * (sum + 1) - sm + mod * 100LL) % mod;     for (int i = 2; i < n; i++) {       long long a = max(0LL, min({r[i], r[i - 1], r[i - 2]}) -                                  max({l[i], l[i - 1], l[i - 2]}) + 1);       long long b = max(0LL, r[i - 2] - l[i - 2] + 1);       b = (b * max(0LL, r[i - 1] - l[i - 1] + 1)) % mod;       b = (b * max(0LL, r[i] - l[i] + 1)) % mod;       p = (a * pw(b, mod - 2)) % mod;       ans = (ans + 2 * p) % mod;     }     cout << ans <<   n ;     return (0);   }   