#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 10;
const long long INF = 1e9 + 10;
const int MOD = 998244353;
int n, w;
long long sum[4 * MAXN];
int maxx[4 * MAXN];
void upd_sum(int u, int l, int r, int ql, int qr, long long val) {
  if (l > qr || r < ql) return;
  if (l >= ql && r <= qr) {
    sum[u] += val;
    return;
  }
  int mid = (l + r) / 2;
  upd_sum(u * 2 + 1, l, mid, ql, qr, val);
  upd_sum(u * 2 + 2, mid + 1, r, ql, qr, val);
}
long long get_sum(int u, int l, int r, int pos) {
  if (l == r) return sum[u];
  int mid = (l + r) / 2;
  if (pos <= mid) return sum[u] + get_sum(u * 2 + 1, l, mid, pos);
  return sum[u] + get_sum(u * 2 + 2, mid + 1, r, pos);
}
void upd_maxx(int u, int l, int r, int pos, int val) {
  if (l == r) {
    maxx[u] = val;
    return;
  }
  int mid = (l + r) / 2;
  if (pos <= mid)
    upd_maxx(u * 2 + 1, l, mid, pos, val);
  else
    upd_maxx(u * 2 + 2, mid + 1, r, pos, val);
  maxx[u] = max(maxx[u * 2 + 1], maxx[u * 2 + 2]);
}
int get_maxx(int u, int l, int r, int ql, int qr) {
  if (l > qr || r < ql) return -INF;
  if (l >= ql && r <= qr) return maxx[u];
  int mid = (l + r) / 2;
  return max(get_maxx(u * 2 + 1, l, mid, ql, qr),
             get_maxx(u * 2 + 2, mid + 1, r, ql, qr));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> w;
  for (int i = 0; i < 4 * MAXN; i++) maxx[i] = -INF;
  for (int i = 0; i < n; i++) {
    int sz;
    cin >> sz;
    vector<int> a(sz);
    int max_elem = -INF;
    for (int j = 0; j < sz; j++) {
      cin >> a[j];
      max_elem = max(max_elem, a[j]);
      upd_maxx(0, 0, sz - 1, j, a[j]);
    }
    for (int j = 0; j < min(sz, w); j++) {
      int l = 0, r = sz - 1;
      l = max(l, sz - (w - j));
      r = min(r, j);
      if (l <= r) {
        int val = get_maxx(0, 0, sz - 1, l, r);
        if (val < 0 && (j >= sz || j < w - sz)) continue;
        upd_sum(0, 0, w - 1, j, j, val);
      }
    }
    if (sz <= w - sz - 1 && max_elem > 0) {
      upd_sum(0, 0, w - 1, sz, w - sz - 1, max_elem);
    }
    for (int j = max(sz, w - sz); j < w; j++) {
      int l = 0, r = sz - 1;
      l = max(l, sz - (w - j));
      r = min(r, j);
      if (l <= r) {
        int val = get_maxx(0, 0, sz - 1, l, r);
        if (val < 0 && (j >= sz || j < w - sz)) continue;
        upd_sum(0, 0, w - 1, j, j, val);
      }
    }
    for (int j = 0; j < 4 * sz; j++) maxx[j] = -INF;
  }
  for (int i = 0; i < w; i++) {
    cout << get_sum(0, 0, w - 1, i) << ' ';
  }
  return 0;
}
