#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
long long sum[maxn * 4];
int mn[maxn * 4], mx[maxn * 4], lz[maxn * 4], vis[maxn * 4];
int inf = 1e9 + 1;
vector<int> G;
void add(int o) {
  if (!vis[o]) G.push_back(o), vis[o] = 1;
}
void pushup(int o, int l, int r) {
  mn[o] = min(mn[o * 2], mn[o * 2 + 1]);
  mx[o] = max(mx[o * 2], mx[o * 2 + 1]);
}
void pushdown(int o, int l, int r) {
  if (lz[o] != -inf) {
    mn[o * 2] = max(mn[o * 2], lz[o]);
    mx[o * 2] = max(mx[o * 2], lz[o]);
    mx[o * 2 + 1] = max(mx[o * 2 + 1], lz[o]);
    mn[o * 2 + 1] = max(mn[o * 2 + 1], lz[o]);
    lz[o * 2] = max(lz[o], lz[o * 2]);
    lz[o * 2 + 1] = max(lz[o * 2 + 1], lz[o]);
    add(o * 2);
    add(o * 2 + 1);
    lz[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 (ql <= l && qr >= r) {
    if (mn[o] >= v) return;
    if (mx[o] <= v) {
      mx[o] = mn[o] = lz[o] = v;
      return;
    }
    pushdown(o, l, r);
    if (mn[o * 2] < v) up(o * 2, l, (l + r) / 2, ql, qr, v);
    if (mn[o * 2 + 1] < v) up(o * 2 + 1, (l + r) / 2 + 1, r, ql, qr, v);
    pushup(o, l, r);
    return;
  }
  pushdown(o, l, r);
  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, l, r);
}
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 + 1, (l + r) / 2 + 1, r, k);
  else
    ans += qu(o * 2, l, (l + r) / 2, k);
  return ans;
}
void cul(int o, int l, int r) {
  if (mn[o] == mx[o]) {
    sum[o] += mx[o];
    return;
  }
  cul(o * 2, l, (l + r) / 2);
  cul(o * 2 + 1, (l + r) / 2 + 1, r);
}
int main() {
  int n, w;
  scanf("%d%d", &n, &w);
  for (int i = 0; i <= w * 4; i++) mx[i] = mn[i] = lz[i] = -inf;
  for (int i = 1; i <= n; i++) {
    int l, p;
    scanf("%d", &l);
    for (int j = 1; j <= l; j++) {
      scanf("%d", &p);
      up(1, 1, w, j, w - l + j, p);
    }
    if (l < w) {
      up(1, 1, w, 1, w - l, 0);
      up(1, 1, w, l + 1, w, 0);
    }
    cul(1, 1, w);
    for (auto v : G) mn[v] = mx[v] = lz[v] = -inf, vis[v] = 0;
    G.clear();
  }
  for (int i = 1; i <= w; i++) printf("%lld\n", qu(1, 1, w, i));
}
