#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
int main() {
  cout << fixed << setprecision(12);
  int n, k;
  cin >> n >> k;
  vector<vector<int>> y(n, vector<int>(k + 1));
  for (auto &yi : y)
    for (auto &yij : yi) cin >> yij;
  vector<double> sum(n);
  for (int j = 0; j < k; j++) {
    vector<tuple<int, int, int>> v;
    for (int i = 0; i < n; i++) {
      v.emplace_back(y[i][j + 1] - y[i][j], y[i][j], i);
    }
    sort(begin(v), end(v));
    auto calc = [&](int k) {
      vector<double> x(n + 1), y(n + 1);
      x[0] = 0.0, y[0] = 0.0;
      x[1] = 1.0, y[1] = 0.0;
      int sz = 2;
      for (auto &t : v)
        if (get<2>(t) < k) {
          auto a = get<0>(t), b = get<1>(t);
          auto f = [&](double x) { return a * x + b; };
          int p = sz - 1;
          while (p >= 0 && f(x[p]) + eps >= y[p]) p--;
          if (p == -1) {
            y[0] = f(x[0] = 0.0);
            y[1] = f(x[1] = 1.0);
            sz = 2;
          } else if (p != sz - 1) {
            double a2 = (y[p + 1] - y[p]) / (x[p + 1] - x[p]);
            double b2 = y[p] - x[p] * a2;
            double x2 = (b2 - b) / (a - a2);
            y[p + 1] = f(x[p + 1] = x2);
            y[p + 2] = f(x[p + 2] = 1.0);
            sz = p + 3;
          }
        }
      double sum = 0.0;
      for (int i = 0; i + 1 < sz; i++) {
        sum += (x[i + 1] - x[i]) * (y[i + 1] + y[i]) / 2;
      }
      return sum;
    };
    vector<double> acc(n + 1);
    for (int i = 0; i < n; i++) acc[i + 1] = calc(i + 1);
    for (int i = 0; i < n; i++) sum[i] += acc[i + 1] - acc[i];
  }
  for (int i = 0; i < n; i++) cout << sum[i] << endl;
  return 0;
}
