#include <bits/stdc++.h>
using namespace std;
double b[82], c[82];
double dp[82][82], pl[82], pm[82], pr[82];
int ls[82], rs[82], p[2 * 82], tot, n, i, j;
void calc(int who, int l, int r) {
  int i, j, k, left = 0, has = 0, tn = 0;
  memset(pl, 0, sizeof(pl));
  memset(pm, 0, sizeof(pm));
  memset(pr, 0, sizeof(pr));
  for (i = 1; i <= n; i++)
    if (i != who) {
      ++tn;
      if (ls[i] >= r)
        pr[tn] = 1;
      else if (rs[i] <= l)
        pl[tn] = 1, left++;
      else {
        has++;
        left++;
        pl[tn] = 1. * (l - ls[i]) / (rs[i] - ls[i]);
        pr[tn] = 1. * (rs[i] - r) / (rs[i] - ls[i]);
        pm[tn] = 1. - pl[tn] - pr[tn];
      }
    }
  memset(dp, 0, sizeof(dp));
  dp[0][0] = 1;
  for (i = 1; i < n; i++) {
    j = min(i, left);
    for (; j >= 0; j--) {
      k = min(has, i - j);
      for (; k >= 0; k--) {
        dp[j][k] = dp[j][k] * pr[i];
        if (j) dp[j][k] += dp[j - 1][k] * pl[i];
        if (k) dp[j][k] += dp[j][k - 1] * pm[i];
      }
    }
  }
  double pos = 1. * (r - l) / (rs[who] - ls[who]);
  for (i = 0; i < n; i++)
    for (j = 0; j < n - i; j++) {
      double tmp = dp[i][j] * pos / (j + 1);
      c[i + 1] += tmp;
      c[i + j + 2] -= tmp;
    }
}
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++)
    scanf("%d %d", &ls[i], &rs[i]), p[++tot] = ls[i], p[++tot] = rs[i];
  sort(p + 1, p + 1 + tot);
  for (i = 1; i <= n; i++) {
    memset(c, 0, sizeof(c));
    for (j = 1; j < tot; j++)
      if (ls[i] <= p[j] && p[j + 1] <= rs[i] && p[j + 1] > p[j])
        calc(i, p[j], p[j + 1]);
    memset(b, 0, sizeof(b));
    for (j = 1; j <= n; j++) {
      b[j] = b[j - 1] + c[j];
      printf("%.8lf ", b[j]);
    }
    printf("\n");
  }
  return 0;
}
