#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007ll;
const long long _3 = 333333336ll;
long long fpow(long long a, long long b) {
  long long ret = 1;
  while (b) {
    if (b % 2 == 1) {
      ret *= a;
      ret %= mod;
    }
    a = a * a;
    a %= mod;
    b /= 2;
  }
  return ret;
}
int n;
int ll[9], r[9];
const double eps = 1e-9;
double up(int a, int b, int c) {
  if (a <= b) return c - b + 1;
  if (a > c) return 0.0;
  return 1.0 * (c - a + 1);
}
double down(int a, int b, int c) {
  if (a >= c) return c - b + 1;
  if (a < b) return 0.0;
  return 1.0 * (a - b + 1);
}
double on(int a, int b, int c) {
  if (a >= b && a <= c) return 1.0;
  return 0;
}
double gao(int status, int val) {
  double ret = 1;
  for (int i = 0; i < n; i++) {
    if (status & (1 << i)) {
      ret *= on(val, ll[i], r[i]);
    }
  }
  return ret;
}
int count(int a) {
  int ret = 0;
  while (a) {
    if (a & 1) ret++;
    a /= 2;
  }
  return ret;
}
int MAIN() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &ll[i], &r[i]);
  }
  double ans = 0;
  for (int i = 1; i <= 10000; i++) {
    double p = 0;
    for (int j = 1; j < (1 << n); j++) {
      double p1 = gao(j, i);
      if (p1 < eps) continue;
      double p2 = 0;
      for (int k = 0; k < n; k++) {
        if (j & (1 << k)) continue;
        double p3 = up(i + 1, ll[k], r[k]);
        double tk = 1;
        for (int l = 0; l < n; l++) {
          if (j & (1 << l)) continue;
          if (l == k) continue;
          tk *= down(i - 1, ll[l], r[l]);
        }
        p3 *= tk;
        p2 += p3;
      }
      p += p1 * p2;
      if (count(j) >= 2) {
        p1 = gao(j, i);
        for (int l = 0; l < n; l++) {
          if (j & (1 << l)) continue;
          p1 *= down(i - 1, ll[l], r[l]);
        }
        p += p1;
      }
    }
    ans += i * p;
  }
  for (int i = 0; i < n; i++) ans /= (r[i] - ll[i] + 1);
  printf("%.15f\n", ans);
  return 0;
}
int main() {
  int cases;
  MAIN();
  return 0;
}
