#include <bits/stdc++.h>   using namespace std;   int S, l[100], r[100], N, w[200];   double a[100], b[100], f[100][100], ans[100];   void init() {     scanf( %d , &N);     for (int i = 1; i <= N; i++)       scanf( %d%d , &l[i], &r[i]), w[++S] = l[i], w[++S] = r[i];   }   void calc(int p, int L, int R) {     int t = 0, bg = 0;     memset(f, 0, sizeof(f)), f[0][0] = 1.0 * (R - L) / (r[p] - l[p]);     for (int i = 1; i <= N; i++)       if (i != p) {         double s = r[i] - l[i], x, y;         if (r[i] <= L) {           bg++;           continue;         } else if (R <= l[i])           continue;         else           x = (L - l[i]) / s, y = (R - L) / s;         t++;         for (int j = t; j >= 0; j--)           for (int k = t - j; k >= 0; k--) {             f[j][k] *= 1 - x - y;             if (j) f[j][k] += f[j - 1][k] * x;             if (k) f[j][k] += f[j][k - 1] * y;           }       }     for (int i = 0; i + bg < N; i++)       for (int j = 0; i + bg + j < N; j++)         ans[i + bg + 1] += f[i][j] / (j + 1),             ans[i + bg + j + 2] -= f[i][j] / (j + 1);   }   void doit() {     sort(w + 1, w + S + 1);     for (int i = 1; i <= N; i++) {       memset(ans, 0, sizeof(ans));       for (int j = 1; j <= S; j++)         if ((j == 1 || w[j] != w[j - 1]) && l[i] <= w[j - 1] && w[j] <= r[i])           calc(i, w[j - 1], w[j]);       for (int j = 1; j <= N; j++)         printf( %.9lf%c , ans[j] += ans[j - 1], j == N ?   n  :    );     }   }   int main() {     init();     doit();     return 0;   }   