#include <bits/stdc++.h>
using namespace std;
void _fill_int(int* p, int val, int rep) {
  int i;
  for (i = 0; i < rep; i++) p[i] = val;
}
signed long long GETi() {
  signed long long i;
  scanf("%lld", &i);
  return i;
}
int N, K;
double Y[301][301];
double S[301];
void solve() {
  int f, i, j, k, l, x, y;
  cin >> N >> K;
  for (i = 0; i < N; i++)
    for (x = 0; x < K + 1; x++) cin >> Y[i][x];
  for (x = 0; x < K; x++) {
    map<double, double> M;
    M[0] = 0;
    M[1] = 0;
    for (i = 0; i < N; i++) {
      map<double, double> M2;
      M2[0] = M[0];
      double prex = 0, prey = M[0];
      for (__typeof(M.begin()) it = M.begin(); it != M.end(); it++) {
        if (it->first == 0) continue;
        double cx = it->first;
        double cy = it->second;
        double y1 = Y[i][x] + (Y[i][x + 1] - Y[i][x]) * prex;
        double y2 = Y[i][x] + (Y[i][x + 1] - Y[i][x]) * cx;
        if (y1 >= prey && y2 >= cy) {
          S[i] += ((y1 + y2) - (cy + prey)) * (cx - prex) / 2.0;
          M2[cx] = y2;
        } else if (y1 <= prey && y2 <= cy) {
          M2[cx] = cy;
        } else if (y1 >= prey && y2 <= cy) {
          double nx = prex + (cx - prex) * (abs(y1 - prey) /
                                            (abs(y1 - prey) + abs(y2 - cy)));
          double ny = prey + (cy - prey) * (abs(y1 - prey) /
                                            (abs(y1 - prey) + abs(y2 - cy)));
          S[i] += ((y1 - prey)) * (nx - prex) / 2.0;
          M2[nx] = ny;
          M2[cx] = cy;
        } else if (y1 <= prey && y2 >= cy) {
          double nx = prex + (cx - prex) * (abs(y1 - prey) /
                                            (abs(y1 - prey) + abs(y2 - cy)));
          double ny = prey + (cy - prey) * (abs(y1 - prey) /
                                            (abs(y1 - prey) + abs(y2 - cy)));
          S[i] += ((y2 - cy)) * (cx - nx) / 2.0;
          M2[nx] = ny;
        }
        prex = cx;
        prey = cy;
      }
      M2[0] = max(M2[0], Y[i][x]);
      M2[1] = max(M2[1], Y[i][x + 1]);
      swap(M, M2);
    }
  }
  for (i = 0; i < N; i++) (void)printf("%.12lf\n", S[i]);
}
int main(int argc, char** argv) {
  string s;
  if (argc == 1) ios::sync_with_stdio(false);
  for (int i = 1; i < argc; i++) s += argv[i], s += '\n';
  for (int i = s.size() - 1; i >= 0; i--) ungetc(s[i], stdin);
  solve();
  return 0;
}
