#include <bits/stdc++.h>
using namespace std;
const long double esp = 1e-9;
struct seg {
  long double x1, y1, x2, y2;
  long double m, c;
  seg() : x1(0), y1(0), x2(1), y2(0), m(0), c(0) {}
  seg(long double x1, long double y1, long double x2, long double y2)
      : x1(x1), y1(y1), x2(x2), y2(y2) {
    m = (y2 - y1) / (x2 - x1);
    c = -m * x1 + y1;
  }
  long double val(long double x) { return m * x + c; }
};
void solve() {
  int n, k;
  cin >> n >> k;
  vector<vector<long double>> y(n, vector<long double>(k + 1));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= k; j++) {
      cin >> y[i][j];
    }
  }
  vector<long double> area(n + 1);
  for (int j = 0; j < k; j++) {
    vector<seg> segs(1);
    for (int i = 0; i < n; i++) {
      vector<seg> nsegs;
      seg nseg(0, y[i][j], 1, y[i][j + 1]);
      for (auto cseg : segs) {
        if (cseg.m + esp >= nseg.m && nseg.m + esp >= cseg.m) {
          nsegs.emplace_back(cseg.x1, max(cseg.val(cseg.x1), nseg.val(cseg.x1)),
                             cseg.x2,
                             max(cseg.val(cseg.x2), nseg.val(cseg.x2)));
          if (isnan(nsegs.back().m)) nsegs.pop_back();
        } else {
          long double x = (cseg.c - nseg.c) / (nseg.m - cseg.m);
          if (x >= cseg.x1 && x <= cseg.x2) {
            nsegs.emplace_back(cseg.x1,
                               max(cseg.val(cseg.x1), nseg.val(cseg.x1)), x,
                               cseg.val(x));
            if (isnan(nsegs.back().m)) nsegs.pop_back();
            nsegs.emplace_back(x, cseg.val(x), cseg.x2,
                               max(cseg.val(cseg.x2), nseg.val(cseg.x2)));
            if (isnan(nsegs.back().m)) nsegs.pop_back();
          } else {
            nsegs.emplace_back(
                cseg.x1, max(cseg.val(cseg.x1), nseg.val(cseg.x1)), cseg.x2,
                max(cseg.val(cseg.x2), nseg.val(cseg.x2)));
            if (isnan(nsegs.back().m)) nsegs.pop_back();
          }
        }
      }
      segs.swap(nsegs);
      for (auto cseg : segs) {
        area[i + 1] += (cseg.x2 - cseg.x1) * (cseg.y1 + cseg.y2) / 2.0;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    cout << area[i + 1] - area[i] << "\n";
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  cout << fixed << setprecision(20);
  ;
  int t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
}
