#include <bits/stdc++.h>
using namespace std;
const int M = 85;
const double eps = 1e-9;
int n, l[M], r[M];
int pl[M * 2], psz;
double ans[M][M], dp[2][M][M];
void CLR(int x, int a, int b) {
  for (int j = 0; j <= a; j++)
    for (int k = 0; k <= b; k++) dp[x][j][k] = 0;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++)
    scanf("%d %d", &l[i], &r[i]), pl[psz++] = l[i], pl[psz++] = r[i];
  sort(pl, pl + psz), psz = unique(pl, pl + psz) - pl;
  for (int i = 1, cu, nx, c, cs; i <= n; i++) {
    for (int j = 0, up = psz - 1; j < up; j++) {
      if (pl[j] >= l[i] && pl[j] < r[i]) {
        cu = 0, nx = 1;
        CLR(cu, 1, 1);
        dp[cu][1][0] = 1.0 * (pl[j + 1] - pl[j]) / (r[i] - l[i]);
        c = 1, cs = 0;
        for (int k = 1; k <= n; k++)
          if (i != k) {
            static double p, px, pd;
            if (pl[j] >= l[k] && pl[j] < r[k])
              p = 1.0 * (pl[j + 1] - pl[j]) / (r[k] - l[k]);
            else
              p = 0;
            if (l[k] < pl[j])
              px = 1.0 * (min(pl[j], r[k]) - l[k]) / (r[k] - l[k]);
            else
              px = 0;
            if (r[k] > pl[j + 1])
              pd = 1.0 * (r[k] - max(pl[j + 1], l[k])) / (r[k] - l[k]);
            else
              pd = 0;
            if (r[k] <= pl[j]) {
              cs++;
              continue;
            }
            if (p < eps && px < eps) continue;
            CLR(nx, c + 1, c + 1);
            for (int a = 1; a <= c; a++)
              for (int b = 0, up = c - a; b <= up; b++)
                if (dp[cu][a][b] > eps) {
                  dp[nx][a][b] += dp[cu][a][b] * pd;
                  dp[nx][a + 1][b] += dp[cu][a][b] * p;
                  dp[nx][a][b + 1] += dp[cu][a][b] * px;
                }
            cu = !cu, nx = !nx;
            c++;
          }
        for (int a = 1; a <= c; a++)
          for (int b = 0, up = c - a; b <= up; b++)
            if (dp[cu][a][b] > eps) {
              static double p;
              p = dp[cu][a][b] / a;
              for (int c = 1; c <= a; c++) ans[i][c + b + cs] += p;
            }
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) printf("%.10f ", ans[i][j]);
    putchar('\n');
  }
  return 0;
}
