#include <bits/stdc++.h>
using namespace std;
const int N = 85;
int n;
int l[N], r[N];
int pos[N << 1], tot;
double dp[N][N][N];
double ans[N][N];
int st, ed;
void solve(int L, int R, int dep) {
  if (L == R) {
    if (l[L] <= st && ed <= r[L]) {
      for (int j = 0; j <= n; j++)
        for (int k = 1; j + k <= n; k++)
          ans[L][j + 1] += dp[dep - 1][j][k] / k * (ed - st) / (r[L] - l[L]),
              ans[L][j + k + 1] -=
              dp[dep - 1][j][k] / k * (ed - st) / (r[L] - l[L]);
    }
    return;
  }
  int mid = (L + R) / 2;
  for (int j = 0; j <= n; j++)
    for (int k = 1; j + k <= n; k++) dp[dep][j][k] = dp[dep - 1][j][k];
  for (int i = mid + 1; i <= R; i++)
    for (int j = n; j >= 0; j--)
      for (int k = n - j; k >= 1; k--) {
        if (r[i] > ed)
          dp[dep][j][k] =
              dp[dep][j][k] * (r[i] - max(ed, l[i])) / (r[i] - l[i]);
        else
          dp[dep][j][k] = 0;
        if (l[i] < st && j - 1 >= 0)
          dp[dep][j][k] +=
              dp[dep][j - 1][k] * (min(st, r[i]) - l[i]) / (r[i] - l[i]);
        if (l[i] <= st && ed <= r[i] && k - 1 >= 1)
          dp[dep][j][k] += dp[dep][j][k - 1] * (ed - st) / (r[i] - l[i]);
      }
  solve(L, mid, dep + 1);
  for (int j = 0; j <= n; j++)
    for (int k = 1; j + k <= n; k++) dp[dep][j][k] = dp[dep - 1][j][k];
  for (int i = L; i <= mid; i++)
    for (int j = n; j >= 0; j--)
      for (int k = n - j; k >= 1; k--) {
        if (r[i] > ed)
          dp[dep][j][k] =
              dp[dep][j][k] * (r[i] - max(ed, l[i])) / (r[i] - l[i]);
        else
          dp[dep][j][k] = 0;
        if (l[i] < st && j - 1 >= 0)
          dp[dep][j][k] +=
              dp[dep][j - 1][k] * (min(st, r[i]) - l[i]) / (r[i] - l[i]);
        if (l[i] <= st && ed <= r[i] && k - 1 >= 1)
          dp[dep][j][k] += dp[dep][j][k - 1] * (ed - st) / (r[i] - l[i]);
      }
  solve(mid + 1, R, dep + 1);
  return;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &l[i], &r[i]);
    pos[++tot] = l[i], pos[++tot] = r[i];
  }
  sort(pos + 1, pos + tot + 1);
  tot = unique(pos + 1, pos + tot + 1) - pos - 1;
  dp[0][0][1] = 1;
  for (int j = 1; j < tot; j++) {
    st = pos[j], ed = pos[j + 1];
    solve(1, n, 1);
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) ans[i][j] += ans[i][j - 1];
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) printf("%.6lf ", ans[i][j]);
    printf("\n");
  }
  return 0;
}
