func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     int n, l[10], r[10], t = 1;     double ans = 0, o = 1;     cin >> n;     for (int i = 0; i < n; i++) {       t *= 2;       cin >> l[i] >> r[i];       o *= r[i] - l[i] + 1;     }     if (n == 1) {       cout << setprecision(10) << fixed << (r[0] + l[0]) / 2.0 << endl;       return 0;     }     for (int i = 1; i <= 10000; i++) {       for (int g = 0; g < n; g++) {         if (r[g] <= i) continue;         for (int j = 1; j < t; j++) {           int a[10] = {}, t2 = j, o = 0;           while (t2) {             a[o++] = t2 % 2;             t2 /= 2;           }           if (a[g]) continue;           double k = 1;           bool ch = 0;           for (int h = 0; h < n; h++) {             if (h == g) continue;             if (a[h] && (r[h] < i || l[h] > i)) {               ch = 1;               h = n;             }             if (!a[h] && l[h] >= i) {               ch = 1;               h = n;             }             if (!a[h]) k *= min(i - 1, r[h]) - l[h] + 1;           }           if (ch) continue;           k *= r[g] - max(i + 1, l[g]) + 1;           ans += k * i;         }       }     }     for (int i = 1; i <= 10000; i++) {       for (int j = 1; j < t; j++) {         int a[10] = {}, t2 = j, o = 0, d = 0;         while (t2) {           a[o++] = t2 % 2;           if (a[o - 1]) d++;           t2 /= 2;         }         double k = 1;         if (d == 1) continue;         bool ch = 0;         for (int h = 0; h < n; h++) {           if (a[h] && (r[h] < i || l[h] > i)) {             ch = 1;             h = n;           }           if (!a[h] && l[h] >= i) {             ch = 1;             h = n;           }           if (!a[h]) k *= min(i - 1, r[h]) - l[h] + 1;         }         if (ch) continue;         ans += k * i;       }     }     cout << setprecision(10) << fixed << ans / o << endl;     return 0;   }   