#include <bits/stdc++.h>
using namespace std;
int l[10], r[10];
int main() {
  int n;
  scanf("%d", &n);
  double tot = 1.0;
  for (int i = 0; i < n; ++i) {
    scanf("%d%d", &l[i], &r[i]);
    tot *= (r[i] - l[i] + 1);
  }
  double ret = 0;
  for (int i = 1; i < (1 << n); ++i) {
    int p1;
    for (int j = 0; j < n; ++j)
      if (i >> j & 1) {
        p1 = j;
        break;
      }
    int ml = 0, mr = 1e9;
    for (int k = 0; k < n; ++k)
      if (i >> k & 1) {
        ml = max(ml, l[k]);
        mr = min(mr, r[k]);
      }
    if (ml > mr) continue;
    if (__builtin_popcount(i) > 1) {
      for (int j = ml; j <= mr; ++j) {
        double s = 1.0;
        for (int k = 0; k < n; ++k)
          if (!(i >> k & 1)) {
            if (l[k] < j) {
              s *= min(r[k] - l[k] + 1, j - l[k]);
            } else {
              s = 0;
            }
          }
        ret += s * j;
      }
      continue;
    }
    for (int j = r[p1] - 1; j >= 1; --j) {
      double x = min(mr - ml + 1, mr - j);
      double s = 1.0, t = 1.0;
      for (int k = 0; k < n; ++k)
        if (!(i >> k & 1)) {
          if (l[k] <= j && r[k] >= j) {
            s *= (j - l[k] + 1);
            t *= (j - l[k]);
          } else if (r[k] < j) {
            s *= (r[k] - l[k] + 1);
            t *= (r[k] - l[k] + 1);
          } else {
            s = t = 0;
            break;
          }
        }
      s -= t;
      ret += x * s * j;
    }
  }
  printf("%.10lf\n", ret / tot);
  return 0;
}
