#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int n, w;
long long ans[maxn];
vector<pair<int, int> > add[maxn], rem[maxn];
multiset<int> ms[maxn];
void ReadInput() {
  cin >> n >> w;
  for (int i = 0; i < n; ++i) {
    int cnt;
    cin >> cnt;
    for (int j = 0; j < cnt; ++j) {
      int x;
      cin >> x;
      add[j].push_back({x, i});
      rem[j + w - cnt].push_back({x, i});
    }
    if (cnt < w) {
      add[cnt].push_back({0, i});
      rem[w - 1].push_back({0, i});
      add[0].push_back({0, i});
      rem[w - 1 - cnt].push_back({0, i});
    }
  }
}
void Solve() {
  for (int i = 0; i < w; ++i) {
    for (auto j : add[i]) {
      int idx = j.second;
      int val = j.first;
      ans[i] -= ms[idx].empty() ? 0 : *ms[idx].rbegin();
      ms[idx].insert(val);
      ans[i] += *ms[idx].rbegin();
    }
    if (i < w - 1) {
      ans[i + 1] = ans[i];
      for (auto j : rem[i]) {
        int idx = j.second;
        int val = j.first;
        ans[i + 1] -= *ms[idx].rbegin();
        ms[idx].erase(ms[idx].find(val));
        ans[i + 1] += ms[idx].empty() ? 0 : *ms[idx].rbegin();
      }
    }
    cout << ans[i] << ' ';
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  ReadInput();
  Solve();
}
