#include <bits/stdc++.h>
using namespace std;
const long long M = 1e6 + 5;
long long n, w, ans[M], lg2[M], mx[M];
vector<long long> a[M];
long long st[M][20];
void build(long long k, long long m) {
  for (long long i = 0; i < m; i++) st[i][0] = a[k][i];
  for (long long j = 1; j <= lg2[m]; j++)
    for (long long i = 0; i + (1 << j) <= m; i++)
      st[i][j] = max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]);
}
long long query(long long l, long long r, long long idx) {
  l = max(0LL, l);
  r = min((long long)a[idx].size() - 1, r);
  long long j = lg2[r - l + 1];
  long long ans = max(st[l][j], st[r - (1 << j) + 1][j]);
  return ans;
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  lg2[1] = 0;
  for (long long i = 2; i < M; i++) lg2[i] = lg2[i / 2] + 1;
  cin >> n >> w;
  long long cur = 0;
  for (long long i = 0; i < n; i++) {
    long long m;
    cin >> m;
    a[i].resize(m);
    for (long long j = 0; j < m; j++) {
      cin >> a[i][j];
      mx[i] = max(mx[i], a[i][j]);
    }
    build(i, m);
    for (long long j = 0; j < m; j++) {
      ans[j] -= mx[i];
      long long l = m + j - w, r = j;
      long long res = query(l, r, i);
      if (w - 1 - j >= m) res = max(res, 0LL);
      ans[j] += res;
    }
    for (long long j = w - 1; j >= max(w - m, m); j--) {
      ans[j] -= mx[i];
      long long l = m + j - w, r = m - 1;
      long long res = query(l, r, i);
      if (j >= m) res = max(res, 0LL);
      ans[j] += res;
    }
    cur += mx[i];
  }
  for (long long j = 0; j < w; j++) {
    ans[j] += cur;
    cout << ans[j] << ' ';
  }
  return 0;
}
