#include <bits/stdc++.h>
using namespace std;
const int N = 205;
const double EPS = 1e-8;
int n, l[N], r[N], pp[N];
inline double pless(int pos, int x) {
  if (x < l[pos])
    return 0;
  else if (x > r[pos])
    return 1;
  return double(x - l[pos]) / (r[pos] - l[pos]);
}
inline double pmore(int pos, int x) { return 1 - pless(pos, x); }
inline double p(int pos, int l, int r) { return pless(pos, r) - pless(pos, l); }
double ans[N][N], sum[N][N][N], f[15][N][N], g[N][N], s[15], pm[N][N], pl[N][N],
    pv[N][N];
void work(int t, int pos, int v) {
  for (int i = 0; i <= s[t]; i++)
    for (int j = 0; i + j <= s[t]; j++) {
      if (f[t][i][j] < EPS) continue;
      g[i][j] += f[t][i][j] * pm[pos][v + 1];
      g[i + 1][j] += f[t][i][j] * pl[pos][v];
      g[i][j + 1] += f[t][i][j] * pv[pos][v];
    }
  ++s[t];
  for (int i = 0; i <= s[t]; i++)
    for (int j = 0; i + j <= s[t]; j++) f[t][i][j] = g[i][j], g[i][j] = 0;
}
void solve(int d, int lp, int rp, int v) {
  if (lp == rp) {
    for (int i = 0; i <= s[d]; i++)
      for (int j = 0; i + j <= s[d]; j++)
        sum[lp][i][j] += f[d][i][j] * pv[lp][v];
    return;
  }
  int mid = (lp + rp) >> 1;
  s[d + 1] = s[d];
  for (int i = 0; i <= s[d]; i++)
    for (int j = 0; i + j <= s[d]; j++) f[d + 1][i][j] = f[d][i][j];
  for (int i = lp; i <= mid; i++) work(d + 1, i, v);
  solve(d + 1, mid + 1, rp, v);
  s[d + 1] = s[d];
  for (int i = 0; i <= s[d]; i++)
    for (int j = 0; i + j <= s[d]; j++) f[d + 1][i][j] = f[d][i][j];
  for (int i = mid + 1; i <= rp; i++) work(d + 1, i, v);
  solve(d + 1, lp, mid, v);
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  int idx = 0;
  for (int i = 1; i <= n; i++) {
    cin >> l[i] >> r[i];
    pp[++idx] = l[i];
    pp[++idx] = r[i];
  }
  sort(pp + 1, pp + idx + 1);
  idx = unique(pp + 1, pp + idx + 1) - pp - 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= idx; j++) {
      pm[i][j] = pmore(i, pp[j]), pl[i][j] = pless(i, pp[j]);
      if (j < idx) pv[i][j] = p(i, pp[j], pp[j + 1]);
    }
  f[0][0][0] = 1;
  for (int i = 1; i < idx; i++) solve(0, 1, n, i);
  for (int x = 1; x <= n; ++x)
    for (int i = 0; i < n; i++)
      for (int j = 0; i + j < n; j++)
        for (int k = 1; k <= j + 1; k++)
          ans[x][i + k] += sum[x][i][j] / (j + 1);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) printf("%.10lf ", ans[i][j]);
    puts("");
  }
  return 0;
}
