#include <bits/stdc++.h>
using namespace std;
double c[310][310];
double ans[310];
double ck[310];
int n, k;
int ln[2], r, w;
double lx[2][310], ly[2][310];
double f(double a, double k, double h) { return (a + a + k * h) * h * 0.5; }
int main() {
  int i, j, ki;
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; i++) {
    for (j = 0; j <= k; j++) {
      scanf("%lf", &c[i][j]);
    }
  }
  double y0, y1, k0, k1, x;
  for (ki = 0; ki < k; ki++) {
    ans[0] += (c[0][ki] + c[0][ki + 1]) * 0.5;
    for (i = 0; i < n; i++) ck[i] = c[i][ki + 1] - c[i][ki];
    lx[0][0] = 0;
    ly[0][0] = c[0][ki];
    lx[0][1] = 1;
    ly[0][1] = c[0][ki + 1];
    ln[0] = 2;
    w = 1;
    r = 0;
    for (i = 1; i < n; i++) {
      ln[w] = 1;
      lx[w][0] = 0;
      ly[w][0] = max(ly[r][0], c[i][ki]);
      for (j = 0; j + 1 < ln[r]; j++) {
        y0 = c[i][ki] + ck[i] * lx[r][j];
        y1 = ly[r][j];
        k0 = ck[i];
        k1 = (ly[r][j + 1] - ly[r][j]) / (lx[r][j + 1] - lx[r][j]);
        if (c[i][ki] + ck[i] * lx[r][j] < ly[r][j] + 1e-8 &&
            c[i][ki] + ck[i] * lx[r][j + 1] < ly[r][j + 1] + 1e-8) {
          lx[w][ln[w]] = lx[r][j + 1];
          ly[w][ln[w]] = ly[r][j + 1];
          ln[w]++;
        } else if (c[i][ki] + ck[i] * lx[r][j] > ly[r][j] - 1e-8 &&
                   c[i][ki] + ck[i] * lx[r][j + 1] > ly[r][j + 1] - 1e-8) {
          lx[w][ln[w]] = lx[r][j + 1];
          ly[w][ln[w]] = c[i][ki] + ck[i] * lx[r][j + 1];
          ans[i] += f(y0, k0, (lx[r][j + 1] - lx[r][j])) -
                    f(y1, k1, (lx[r][j + 1] - lx[r][j]));
          ln[w]++;
        } else if (c[i][ki] + ck[i] * lx[r][j] > ly[r][j] + 1e-8 &&
                   c[i][ki] + ck[i] * lx[r][j + 1] < ly[r][j + 1] - 1e-8) {
          x = (y1 - y0) / (k0 - k1);
          lx[w][ln[w]] = lx[r][j] + x;
          ly[w][ln[w]] = y0 + x * k0;
          ans[i] += f(y0, k0, lx[w][ln[w]] - lx[w][ln[w] - 1]) -
                    f(y1, k1, lx[w][ln[w]] - lx[w][ln[w] - 1]);
          ln[w]++;
          lx[w][ln[w]] = lx[r][j + 1];
          ly[w][ln[w]] = ly[r][j + 1];
          ln[w]++;
        } else {
          x = (y1 - y0) / (k0 - k1);
          lx[w][ln[w]] = lx[r][j] + x;
          ly[w][ln[w]] = y0 + x * k0;
          ln[w]++;
          lx[w][ln[w]] = lx[r][j + 1];
          ly[w][ln[w]] = c[i][ki] + ck[i] * lx[r][j + 1];
          ans[i] += f(y0 + x * k0, k0, lx[w][ln[w]] - lx[w][ln[w] - 1]) -
                    f(y1 + x * k1, k1, lx[w][ln[w]] - lx[w][ln[w] - 1]);
          ln[w]++;
        }
      }
      swap(r, w);
    }
  }
  for (i = 0; i < n; i++) printf("%.10f\n", ans[i]);
  return 0;
}
