#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
double f[82][82], ans[82];
int P[82 * 2], L[82], R[82], n;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &L[i], &R[i]);
    P[i] = L[i];
    P[i + n] = R[i];
  }
  sort(P + 1, P + n + n + 1);
  for (int i = 1; i <= n; ++i) {
    int l = lower_bound(P + 1, P + n + n + 1, L[i]) - P,
        r = lower_bound(P + 1, P + n + n + 1, R[i]) - P;
    memset(ans, 0, sizeof(ans));
    for (int j = l; j <= r - 1; ++j) {
      memset(f, 0, sizeof(f));
      int upp = 0, cnt = 0;
      f[0][0] = 1;
      for (int k = 1; k <= n; ++k)
        if (k != i) {
          if (R[k] <= P[j]) {
            upp++;
            continue;
          }
          if (L[k] >= P[j + 1]) continue;
          double p = (double)(P[j] - L[k]) / (R[k] - L[k]),
                 q = (double)(P[j + 1] - P[j]) / (R[k] - L[k]);
          for (int x = cnt; x >= 0; --x)
            for (int y = cnt - x; y >= 0; --y) {
              f[x + 1][y] += f[x][y] * p;
              f[x][y + 1] += f[x][y] * q;
              f[x][y] *= (1 - p - q);
            }
          cnt++;
        }
      double tmp = (double)(P[j + 1] - P[j]) / (R[i] - L[i]);
      for (int x = 0; x <= cnt; ++x)
        for (int y = 0; y <= cnt; ++y)
          if (f[x][y] > 1e-12)
            for (int k = x + 1 + upp; k <= x + y + 1 + upp; ++k)
              ans[k] += f[x][y] / (y + 1) * tmp;
    }
    for (int j = 1; j <= n; ++j) printf("%.10lf ", ans[j]);
    puts("");
  }
}
