#include <bits/stdc++.h>
using namespace std;
void slideMax(multiset<long long> &sm, long long maxSize, long long k,
              long long elem, long long *cumRes) {
  sm.insert(elem);
  long long m = *(--sm.end());
  if (sm.size() <= maxSize) {
    m = max(m - m, m);
  }
  cumRes[k] += m;
  cumRes[k + 1] -= m;
}
int main() {
  long long n, w;
  cin >> n >> w;
  long long cumRes[w + 1];
  memset(cumRes, 0, sizeof(cumRes));
  while (n--) {
    long long l;
    multiset<long long> slidingMax;
    cin >> l;
    long long arr[l];
    for (long long k = 0; k < l; k++) {
      cin >> arr[k];
      if (slidingMax.size() > w - l) {
        slidingMax.erase(slidingMax.find(arr[k - (w - l) - 1]));
      }
      slideMax(slidingMax, w - l, k, arr[k], cumRes);
    }
    if (l < w - l) {
      cumRes[l] += max(l - l, *(--slidingMax.end()));
      cumRes[w - l] -= max(l - l, *(--slidingMax.end()));
    }
    slidingMax = multiset<long long>();
    for (long long k = w - 1; k >= max(w - l, l); k--) {
      if (slidingMax.size() > w - l) {
        slidingMax.erase(slidingMax.find(arr[k + (w - l) + 1]));
      }
      slideMax(slidingMax, w - l, k, arr[l - w + k], cumRes);
    }
  }
  long long sum = 0;
  for (long long k = 0; k < w; k++) {
    sum += cumRes[k];
    cout << sum << " ";
  }
  return 0;
}
