#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int rows, w;
  cin >> rows >> w;
  vector<long long int> ans(w + 1);
  for (int row = 0; row < rows; row++) {
    int n;
    cin >> n;
    vector<int> a(n), perm(n), l(n), r(n);
    for (int i = 0; i < n; i++) {
      cin >> a[i];
      perm[i] = i;
      l[i] = i;
      r[i] = w - (n - i);
    }
    sort(perm.begin(), perm.end(), [&](int i, int j) { return a[i] > a[j]; });
    set<int> ids;
    for (int i = 0; i < n; i++) {
      auto it = ids.upper_bound(perm[i]);
      if (it != ids.end()) {
        r[perm[i]] = min(r[perm[i]], l[*it] - 1);
      }
      if (it != ids.begin()) {
        it--;
        l[perm[i]] = max(l[perm[i]], r[*it] + 1);
      }
      ids.insert(perm[i]);
    }
    int preff = -1, suff = w;
    int mx = w - n - 1;
    for (int i = 0; i < n; i++) {
      if (l[i] > mx || a[i] >= 0) {
        break;
      }
      preff = min(r[i], mx);
      l[i] = preff + 1;
    }
    int mn = n;
    for (int i = n - 1; i >= 0; i--) {
      if (r[i] < mn || a[i] >= 0) {
        break;
      }
      suff = max(l[i], mn);
      r[i] = suff - 1;
    }
    for (int i = 0; i < n; i++) {
      if (l[i] <= r[i]) {
        if (l[i] <= w) ans[l[i]] += a[i];
        if (r[i] + 1 <= w) ans[r[i] + 1] -= a[i];
      }
    }
  }
  for (int i = 1; i <= w; i++) {
    ans[i] += ans[i - 1];
  }
  for (int i = 0; i < w; i++) {
    cout << ans[i] << ' ';
  }
  return 0;
}
