#include <bits/stdc++.h>
int main(void) {
  int i;
  int n;
  int l[5], r[5];
  int val;
  long long cnt[10001];
  double sum, ans;
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%d %d", l + i, r + i);
  sum = 0.0;
  for (val = 1; val <= 10000; val++) {
    int high1, high2, high3, high4, high5;
    int sec1, sec2, sec3, sec4;
    cnt[val] = 0;
    for (high1 = 0; high1 < n; high1++)
      for (sec1 = 0; sec1 < n; sec1++)
        if (high1 != sec1) {
          long long way;
          way = 1LL;
          for (i = 0; i < n; i++)
            if (i == high1)
              way *= (((r[i] - (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) +
                        1) > (0))
                          ? (r[i] -
                             (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) + 1)
                          : (0));
            else if (i == sec1)
              way *= val >= l[i] && val <= r[i];
            else
              way *= ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] +
                        1) > (0))
                          ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                             l[i] + 1)
                          : (0));
          cnt[val] += way;
        }
    for (high1 = 0; high1 < n; high1++)
      for (sec1 = 0; sec1 < n; sec1++)
        for (sec2 = sec1 + 1; sec2 < n; sec2++)
          if (high1 != sec1 && high1 != sec2) {
            long long way;
            way = 1LL;
            for (i = 0; i < n; i++)
              if (i == high1)
                way *= (((r[i] - (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) +
                          1) > (0))
                            ? (r[i] -
                               (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) + 1)
                            : (0));
              else if (i == sec1 || i == sec2)
                way *= val >= l[i] && val <= r[i];
              else
                way *= ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] +
                          1) > (0))
                            ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                               l[i] + 1)
                            : (0));
            cnt[val] += way;
          }
    for (high1 = 0; high1 < n; high1++)
      for (sec1 = 0; sec1 < n; sec1++)
        for (sec2 = sec1 + 1; sec2 < n; sec2++)
          for (sec3 = sec2 + 1; sec3 < n; sec3++)
            if (high1 != sec1 && high1 != sec2 && high1 != sec3) {
              long long way;
              way = 1LL;
              for (i = 0; i < n; i++)
                if (i == high1)
                  way *=
                      (((r[i] - (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) +
                         1) > (0))
                           ? (r[i] -
                              (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) + 1)
                           : (0));
                else if (i == sec1 || i == sec2 || i == sec3)
                  way *= val >= l[i] && val <= r[i];
                else
                  way *= ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] +
                            1) > (0))
                              ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                                 l[i] + 1)
                              : (0));
              cnt[val] += way;
            }
    for (high1 = 0; high1 < n; high1++)
      for (sec1 = 0; sec1 < n; sec1++)
        for (sec2 = sec1 + 1; sec2 < n; sec2++)
          for (sec3 = sec2 + 1; sec3 < n; sec3++)
            for (sec4 = sec3 + 1; sec4 < n; sec4++)
              if (high1 != sec1 && high1 != sec2 && high1 != sec3 &&
                  high1 != sec4) {
                long long way;
                way = 1LL;
                for (i = 0; i < n; i++)
                  if (i == high1)
                    way *=
                        (((r[i] - (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) +
                           1) > (0))
                             ? (r[i] -
                                (((l[i]) > (val + 1)) ? (l[i]) : (val + 1)) + 1)
                             : (0));
                  else if (i == sec1 || i == sec2 || i == sec3 || i == sec4)
                    way *= val >= l[i] && val <= r[i];
                  else
                    way *= ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                              l[i] + 1) > (0))
                                ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                                   l[i] + 1)
                                : (0));
                cnt[val] += way;
              }
    for (high1 = 0; high1 < n; high1++)
      for (high2 = high1 + 1; high2 < n; high2++) {
        long long way;
        way = 1LL;
        for (i = 0; i < n; i++)
          if (i == high1 || i == high2)
            way *= val >= l[i] && val <= r[i];
          else
            way *=
                ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] + 1) >
                  (0))
                     ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] + 1)
                     : (0));
        cnt[val] += way;
      }
    for (high1 = 0; high1 < n; high1++)
      for (high2 = high1 + 1; high2 < n; high2++)
        for (high3 = high2 + 1; high3 < n; high3++) {
          long long way;
          way = 1LL;
          for (i = 0; i < n; i++)
            if (i == high1 || i == high2 || i == high3)
              way *= val >= l[i] && val <= r[i];
            else
              way *= ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] +
                        1) > (0))
                          ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                             l[i] + 1)
                          : (0));
          cnt[val] += way;
        }
    for (high1 = 0; high1 < n; high1++)
      for (high2 = high1 + 1; high2 < n; high2++)
        for (high3 = high2 + 1; high3 < n; high3++)
          for (high4 = high3 + 1; high4 < n; high4++) {
            long long way;
            way = 1LL;
            for (i = 0; i < n; i++)
              if (i == high1 || i == high2 || i == high3 || i == high4)
                way *= val >= l[i] && val <= r[i];
              else
                way *= ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] +
                          1) > (0))
                            ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                               l[i] + 1)
                            : (0));
            cnt[val] += way;
          }
    for (high1 = 0; high1 < n; high1++)
      for (high2 = high1 + 1; high2 < n; high2++)
        for (high3 = high2 + 1; high3 < n; high3++)
          for (high4 = high3 + 1; high4 < n; high4++)
            for (high5 = high4 + 1; high5 < n; high5++) {
              long long way;
              way = 1LL;
              for (i = 0; i < n; i++)
                if (i == high1 || i == high2 || i == high3 || i == high4 ||
                    i == high5)
                  way *= val >= l[i] && val <= r[i];
                else
                  way *= ((((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) - l[i] +
                            1) > (0))
                              ? ((((r[i]) < (val - 1)) ? (r[i]) : (val - 1)) -
                                 l[i] + 1)
                              : (0));
              cnt[val] += way;
            }
    sum += cnt[val];
  }
  ans = 0.0;
  for (i = 1; i <= 10000; i++) ans += (double)i * cnt[i] / sum;
  printf("%.15f\n", ans);
  return 0;
}
