#include <bits/stdc++.h>
using namespace std;
double f[160 + 5][160 + 5], num[160 + 5], le[160 + 5], ri[160 + 5], dp[160 + 5];
int cnt = 0, n;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lf%lf", le + i, ri + i);
    num[++cnt] = le[i], num[++cnt] = ri[i];
  }
  sort(num + 1, num + 1 + cnt);
  cnt = unique(num + 1, num + 1 + cnt) - num - 1;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= n; j++) dp[j] = 0;
    for (int now = 1; now < cnt; now++) {
      double l = num[now], r = num[now + 1];
      if (r <= le[i]) continue;
      if (l >= ri[i]) continue;
      int sum = 0, ll = 0, rr = 0;
      for (int j = 0; j <= n; j++)
        for (int k = 0; k <= n; k++) f[j][k] = 0;
      f[0][0] = (r - l) / (ri[i] - le[i]);
      for (int p = 1; p <= n; p++)
        if (p != i) {
          if (ri[p] <= l) {
            ll++;
            continue;
          }
          if (le[p] >= r) {
            rr++;
            continue;
          }
          double pm = (r - l) / (ri[p] - le[p]),
                 pl = max(l - le[p], 0.0) / (ri[p] - le[p]),
                 pr = max(ri[p] - r, 0.0) / (ri[p] - le[p]);
          sum++;
          for (int j = sum; j >= 0; j--)
            for (int k = sum; k >= 0; k--) {
              f[j][k] *= pm;
              if (j) f[j][k] += f[j - 1][k] * pl;
              if (k) f[j][k] += f[j][k - 1] * pr;
            }
        }
      for (int j = ll; j < n; j++)
        for (int k = rr; k < n - j; k++)
          dp[j + 1] += f[j - ll][k - rr] / (n - j - k),
              dp[n - k + 1] -= f[j - ll][k - rr] / (n - j - k);
    }
    for (int j = 1; j <= n; j++) {
      dp[j] += dp[j - 1];
      printf("%.10lf ", dp[j]);
    }
    puts("");
  }
  return 0;
}
