#include <bits/stdc++.h>
using namespace std;
int const N = 1000000, inf = 1e9;
long long an[N + 1];
int n, x[N], w, m, s[N << 2];
void bld(int l = 0, int r = n - 1, int id = 1) {
  if (l == r) return void(s[id] = x[l]);
  int m = l + r >> 1, a = id << 1, b = a | 1;
  bld(l, m, a);
  bld(m + 1, r, b);
  s[id] = max(s[a], s[b]);
}
int gt(int x, int y, int l = 0, int r = n - 1, int id = 1) {
  if (l > y || r < x) return -inf;
  if (l >= x && r <= y) return s[id];
  int m = l + r >> 1, a = id << 1, b = a | 1;
  return max(gt(x, y, l, m, a), gt(x, y, m + 1, r, b));
}
void adb() {
  bld();
  for (int i = 0; i < (int)(w); ++i) {
    int l = max(0, n - (w - i));
    int r = min(n - 1, i);
    bool fr = (n - (w - i)) < 0 || i >= n;
    int mx = fr ? 0 : -inf;
    mx = max(mx, gt(l, r));
    an[i] += mx;
    an[i + 1] -= mx;
  }
}
void ads() {
  int mx = 0;
  for (int i = 0; i < (int)(n); ++i) {
    mx = max(mx, x[i]);
    an[i] += mx;
    an[i + 1] -= mx;
  }
  mx = 0;
  for (int i = n - 1; i >= 0; --i) {
    mx = max(mx, x[i]);
    an[w - (n - i)] += mx;
    an[w - (n - i) + 1] -= mx;
  }
  an[n] += mx;
  an[w - n] -= mx;
}
int main() {
  scanf("%d%d", &m, &w);
  for (int i = 0; i < (int)(m); ++i) {
    scanf("%d", &n);
    for (int j = 0; j < (int)(n); ++j) scanf("%d", x + j);
    if (n <= w >> 1)
      ads();
    else
      adb();
  }
  for (int i = 1; i < (int)(w); ++i) an[i] += an[i - 1];
  printf("%lld", an[0]);
  for (int i = 1; i < (int)(w); ++i) printf(" %lld", an[i]);
  printf("\n");
}
