#include <bits/stdc++.h>
using namespace std;
template <class T>
bool setmin(T &a, T b) {
  if (b < a) {
    a = b;
    return true;
  } else
    return false;
}
template <class T>
bool setmax(T &a, T b) {
  if (b > a) {
    a = b;
    return true;
  } else
    return false;
}
const double EPS = 1e-8;
int sgn(double x, double e = EPS) { return x < -e ? -1 : x > e; }
struct Point {
  double x, y;
  Point() : x(0), y(0) {}
  Point(double x, double y) : x(x), y(y) {}
  friend double mult(const Point &p1, const Point &p2) {
    return p1.x * p2.y - p1.y * p2.x;
  }
  friend double mult(const Point &p0, const Point &p1, const Point &p2) {
    return (p1.x - p0.x) * (p2.y - p0.y) - (p2.x - p0.x) * (p1.y - p0.y);
  }
};
double ans[333];
int py[333][333];
int n, k;
void cut(vector<Point> &a, Point p1, Point p2) {
  vector<Point> b;
  for (int i = 0; i < (int)(a.size()); ++i) {
    Point a1 = a[i], a2 = a[(i + 1) % a.size()];
    double m1 = mult(p1, p2, a1);
    double m2 = mult(p1, p2, a2);
    if (sgn(m1) * sgn(m2) < 0) {
      Point tmp;
      tmp.x = (a1.x * m2 - a2.x * m1) / (m2 - m1);
      tmp.y = (a1.y * m2 - a2.y * m1) / (m2 - m1);
      b.push_back(tmp);
    }
    if (sgn(m2) >= 0) b.push_back(a2);
  }
  a = b;
}
vector<Point> po[333];
double cal(int cur, int ind) {
  vector<Point> a = po[ind];
  Point p1 = Point(ind - 1, py[cur][ind - 1]);
  Point p2 = Point(ind, py[cur][ind]);
  cut(po[ind], p1, p2);
  cut(a, p2, p1);
  double ans = 0;
  for (int i = (int)(1); i <= (int)(a.size() - 1); ++i)
    ans += mult(a[0], a[i - 1], a[i]);
  ans = abs(ans) / 2.;
  return ans;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = (int)(1); i <= (int)(n); ++i)
    for (int j = (int)(0); j <= (int)(k); ++j) scanf("%d", &py[i][j]);
  memset(ans, 0, sizeof(ans));
  for (int i = (int)(1); i <= (int)(k); ++i) {
    po[i].clear();
    po[i].push_back(Point(i - 1, 0));
    po[i].push_back(Point(i, 0));
    po[i].push_back(Point(i, 1000));
    po[i].push_back(Point(i - 1, 1000));
  }
  for (int i = (int)(1); i <= (int)(n); ++i)
    for (int j = (int)(1); j <= (int)(k); ++j) ans[i] += cal(i, j);
  for (int i = (int)(1); i <= (int)(n); ++i) printf("%.9lf\n", ans[i]);
  return 0;
}
