#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const double maxh = 1e5;
struct point {
  double x, y;
  point(double a = 0, double b = 0) { x = a, y = b; }
} p[301], q[301];
double h[301][301], ans[301];
int n, k;
double mult(point a, point b, point c) {
  return (a.x - c.x) * (b.y - c.y) - (a.y - c.y) * (b.x - c.x);
}
double getarea(point p[], int n) {
  double res = 0;
  p[n] = p[0];
  for (int i = 1; i < n; i++) {
    res += mult(p[i], p[i + 1], p[0]);
  }
  return fabs(res) * 0.5;
}
void getline(point x, point y, double &a, double &b, double &c) {
  a = y.y - x.y;
  b = x.x - y.x;
  c = y.x * x.y - x.x * y.y;
}
point intersect(point x, point y, double a, double b, double c) {
  double u = fabs(a * x.x + b * x.y + c);
  double v = fabs(a * y.x + b * y.y + c);
  point pt;
  pt.x = (x.x * v + y.x * u) / (u + v);
  pt.y = (x.y * v + y.y * u) / (u + v);
  return pt;
}
void cut(double a, double b, double c, int &cCnt) {
  int curCnt = 0;
  for (int i = 1; i <= cCnt; ++i) {
    if (a * p[i].x + b * p[i].y + c <= 0)
      q[++curCnt] = p[i];
    else {
      if (a * p[i - 1].x + b * p[i - 1].y + c < 0) {
        q[++curCnt] = intersect(p[i], p[i - 1], a, b, c);
      }
      if (a * p[i + 1].x + b * p[i + 1].y + c < 0) {
        q[++curCnt] = intersect(p[i], p[i + 1], a, b, c);
      }
    }
  }
  for (int i = 1; i <= curCnt; ++i) p[i] = q[i];
  p[curCnt + 1] = q[1];
  p[0] = p[curCnt];
  cCnt = curCnt;
}
int main() {
  while (scanf("%d%d", &n, &k) != EOF) {
    memset(ans, 0, sizeof(ans));
    for (int i = 0; i < n; i++) {
      for (int j = 0; j <= k; j++) scanf("%lf", &h[i][j]);
    }
    for (int i = 0; i < k; i++) {
      int cnt = 4;
      p[0] = point(i + 0.0, 0);
      p[3] = point(i + 0.0, maxh);
      p[2] = point(i + 1.0, maxh);
      p[1] = point(i + 1.0, 0);
      p[4] = p[0];
      double tmp_a = getarea(p, cnt);
      for (int j = 0; j < n; j++) {
        double a, b, c;
        getline(point(i + 0.0, h[j][i]), point(i + 1.0, h[j][i + 1]), a, b, c);
        cut(a, b, c, cnt);
        double tt = getarea(p, cnt);
        ans[j] += fabs(tmp_a - tt);
        tmp_a = tt;
      }
    }
    for (int i = 0; i < n; i++) printf("%.10lf\n", ans[i]);
  }
}
