#include <bits/stdc++.h>
using namespace std;
template <class T, class S>
inline bool CMX(T &a, S b) {
  return a < b ? a = b, true : false;
}
template <class T, class S>
inline bool CMN(T &a, S b) {
  return a > b ? a = b, true : false;
}
const int N = 1e6 + 10, inf = 1e9 + 1;
int mn[N << 2], tag[N << 2], mx[N << 2], vis[N << 2];
long long sum[N << 2];
vector<int> G;
inline void pushup(int o) {
  mx[o] = max(mx[o * 2], mx[o * 2 + 1]);
  mn[o] = min(mn[o * 2], mn[o * 2 + 1]);
}
inline void add(int o) {
  if (!vis[o]) G.push_back(o);
  vis[o] = 1;
}
void pushdown(int o) {
  if (tag[o] != -inf) {
    CMX(tag[o * 2], tag[o]);
    CMX(tag[o * 2 + 1], tag[o]);
    CMX(mn[o * 2], tag[o]);
    CMX(mn[o * 2 + 1], tag[o]);
    CMX(mx[o * 2], tag[o]);
    CMX(mx[o * 2 + 1], tag[o]);
    add(o * 2);
    add(o * 2 + 1);
    tag[o] = -inf;
  }
}
void up(int o, int l, int r, int ql, int qr, int v) {
  if (ql > qr || mn[o] >= v) return;
  add(o);
  if (l >= ql && r <= qr) {
    if (mx[o] < v) mx[o] = v;
    mn[o] = tag[o] = v;
    return;
  }
  pushdown(o);
  if (ql <= (l + r) / 2) up(o * 2, l, (l + r) / 2, ql, qr, v);
  if (qr > (l + r) / 2) up(o * 2 + 1, (l + r) / 2 + 1, r, ql, qr, v);
  pushup(o);
}
long long qu(int o, int l, int r, int k) {
  if (l == r) return sum[o];
  long long ans = sum[o];
  if (k <= (l + r) / 2)
    ans += qu(o * 2, l, (l + r) / 2, k);
  else
    ans += qu(o * 2 + 1, (l + r) / 2 + 1, r, k);
  return ans;
}
void gao(int o, int l, int r) {
  if (mx[o] == mn[o]) {
    sum[o] += mx[o];
    return;
  }
  pushdown(o);
  gao(o * 2, l, (l + r) / 2);
  gao(o * 2 + 1, (l + r) / 2 + 1, r);
}
int main() {
  int q, n, l, x;
  scanf("%d%d", &q, &n);
  for (int i = 1; i <= 4 * n; i++) mx[i] = mn[i] = tag[i] = -inf;
  for (int i = 1; i <= q; i++) {
    scanf("%d", &l);
    for (int j = 1; j <= l; j++) {
      scanf("%d", &x);
      up(1, 1, n, j, n - (l - j), x);
    }
    if (l < n) {
      up(1, 1, n, l + 1, n, 0);
      up(1, 1, n, 1, n - l, 0);
    }
    gao(1, 1, n);
    for (auto o : G) mx[o] = mn[o] = tag[o] = -inf, vis[o] = 0;
    G.clear();
  }
  for (int i = 1; i <= n; i++) printf("%lld%c", qu(1, 1, n, i), " \n"[i == n]);
}
