#include <bits/stdc++.h>
using namespace std;
int n, i, mp = 1, v[6], lm = 0, rm = 10001, y, j, a[6], b[6], ij = 0;
long double f = 1, g = 1, wynn = 0;
int cor(int a) {
  int a1 = 0, a2 = 0, a3 = 0, j = 1;
  while (a > 0) {
    if (a % 3 == 0) a3++;
    if (a % 3 == 1) a1++;
    if (a % 3 == 2) a2++;
    v[n - j] = a % 3;
    a /= 3, j++;
  }
  if (a1 == 1 && a2 > 0) return 2;
  if (a1 > 1 && a2 == 0) return 1;
  return 0;
}
int main() {
  scanf("%d", &n);
  for (i = 0; i < n; i++)
    scanf("%d %d", &a[i], &b[i]), mp *= 3, f = f * (b[i] - a[i] + 1);
  for (ij = 0; ij < mp; ij++) {
    y = cor(ij);
    if (y == 0) continue;
    if (y == 1) {
      for (i = 0; i < n; i++) {
        if (v[i] == 1) {
          if (lm < a[i]) lm = a[i];
          if (rm > b[i]) rm = b[i];
        }
      }
      for (i = lm; i <= rm; i++) {
        for (j = 0; j < n; j++) {
          if (v[j] == 0) {
            if (a[j] < i && b[j] >= i)
              g = g * (i - a[j]);
            else if (a[j] < i)
              g = g * (b[j] - a[j] + 1);
            else
              g = 0;
          }
        }
        wynn += i * (g / f);
        g = 1;
      }
    }
    if (y == 2) {
      for (i = 0; i < n; i++) {
        if (v[i] == 2) {
          if (lm < a[i]) lm = a[i];
          if (rm > b[i]) rm = b[i];
        }
      }
      for (i = lm; i <= rm; i++) {
        for (j = 0; j < n; j++) {
          if (v[j] == 0) {
            if (a[j] < i && b[j] >= i)
              g = g * (i - a[j]);
            else if (a[j] < i)
              g = g * (b[j] - a[j] + 1);
            else
              g = 0;
          }
          if (v[j] == 1) {
            if (a[j] <= i && b[j] > i)
              g = g * (b[j] - i);
            else if (b[j] > i)
              g = g * (b[j] - a[j] + 1);
            else
              g = 0;
          }
        }
        wynn += i * (g / f);
        g = 1;
      }
    }
    lm = 0, rm = 10001, g = 1;
  }
  cout << fixed << setprecision(10) << wynn;
  return 0;
}
