#include <bits/stdc++.h>
using namespace std;
struct line {
  int m, c;
  line(int m, int c) : m(m), c(c) {}
  double operator*(const line& rhs) const {
    return (double)(c - rhs.c) / (rhs.m - m);
  }
  double eval(double x) const { return m * x + c; }
};
int main() {
  int n, k;
  scanf("%d%d", &k, &n);
  vector<vector<line>> uni(n, {line(0, 0)});
  vector<vector<double>> ends(n);
  for (int i = 0; i < n; i++) ends[i] = {(double)i, (double)i + 1};
  vector<int> a(n + 1);
  double total = 0;
  while (k--) {
    for (int& i : a) scanf("%d", &i);
    double ans = -total;
    for (int i = 0; i < n; i++) {
      line x(a[i + 1] - a[i], a[i] - (a[i + 1] - a[i]) * i);
      vector<line> newuni;
      vector<double> newends;
      for (int j = 0; j < uni[i].size(); j++) {
        if (uni[i][j].m == x.m) {
          if (uni[i][j].c >= x.c) {
            newuni.push_back(uni[i][j]);
          } else {
            newuni.push_back(x);
          }
          newends.push_back(ends[i][j]);
        } else {
          double intersection = uni[i][j] * x;
          if (intersection <= ends[i][j] or ends[i][j + 1] <= intersection) {
            double evalloc = (ends[i][j] + ends[i][j + 1]) / 2;
            double diff = x.eval(evalloc) - uni[i][j].eval(evalloc);
            if (diff < 0) {
              newuni.push_back(uni[i][j]);
            } else {
              newuni.push_back(x);
            }
            newends.push_back(ends[i][j]);
          } else {
            if (x.eval(ends[i][j]) > uni[i][j].eval(ends[i][j])) {
              newuni.push_back(x);
              newends.push_back(ends[i][j]);
              newuni.push_back(uni[i][j]);
            } else {
              newuni.push_back(uni[i][j]);
              newends.push_back(ends[i][j]);
              newuni.push_back(x);
            }
            newends.push_back(intersection);
          }
        }
      }
      newends.push_back(i + 1);
      swap(newuni, uni[i]);
      swap(newends, ends[i]);
    }
    total = 0;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < uni[i].size(); j++) {
        total += uni[i][j].eval((ends[i][j] + ends[i][j + 1]) / 2) *
                 (ends[i][j + 1] - ends[i][j]);
      }
    }
    ans += total;
    printf("%.5lf\n", ans);
  }
}
