#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int mod = 1e9 + 7, oo = 1e9;
const ll loo = 1e18;
ll modpow(ll a, ll b) {
  ll ans = 1;
  for (; b; b /= 2, a = a * a % mod)
    if (b & 1) ans = (ans * a) % mod;
  return ans;
}
ll gcd(ll a, ll b) {
  while (a) b %= a, swap(a, b);
  return b;
}
const bool DEBUG = 1;
using pii = pair<int, int>;
const int N = 1e6 + 7;
vector<pii> sweep_add[N], sweep_del[N];
multiset<int> ds[N];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, w;
  cin >> n >> w;
  for (int z = 0; z < n; z++) {
    int sz;
    cin >> sz;
    for (int i = 0; i < sz; i++) {
      int x;
      cin >> x;
      sweep_add[i].push_back({x, z});
      sweep_del[w - sz + i].push_back({x, z});
    }
    if (sz < w) {
      sweep_add[0].push_back({0, z});
      sweep_del[w - sz - 1].push_back({0, z});
      sweep_add[sz].push_back({0, z});
      sweep_del[w - 1].push_back({0, sz});
    }
  }
  stringstream ss;
  ll ans = 0;
  for (int i = 0; i < w; i++) {
    for (pii pp : sweep_add[i]) {
      int x = pp.first, z = pp.second;
      if (ds[z].size()) ans -= *ds[z].rbegin();
      ds[z].insert(x);
      ans += *ds[z].rbegin();
    }
    ss << ans << " ";
    if (i < w - 1)
      for (pii pp : sweep_del[i]) {
        int x = pp.first, z = pp.second;
        ans -= *ds[z].rbegin();
        ds[z].erase(ds[z].find(x));
        if (ds[z].size()) ans += *ds[z].rbegin();
      }
  }
  cout << ss.str() << endl;
  return 0;
}
