#include <bits/stdc++.h>
using namespace std;
const int maxlongint = 2147483647;
const int N = 1000111;
int n, m;
int q[N], a[N], Mx[N];
long long d[N], s[N];
void solve1(int len) {
  int maxx = 0, last = 0;
  for (int i = 1; i <= len; i++) {
    maxx = max(maxx, a[i]);
    d[i] += maxx - last;
    last = maxx;
  }
  Mx[n + 1] = 0;
  for (int i = n; i >= n - len + 1; i--) {
    Mx[i] = max(Mx[i + 1], a[i - n + len]);
  }
  for (int i = n - len + 1; i <= n; i++) {
    d[i] += Mx[i] - last;
    last = Mx[i];
  }
}
void solve2(int len) {
  for (int i = len + 1; i <= n; i++) a[i] = 0;
  int op = 1, ed = 0, l = n - len + 1, last = 0;
  for (int i = 1; i <= n; i++) {
    q[++ed] = i;
    if (i - q[op] + 1 > l) op++;
    while (ed > op && a[q[ed]] >= a[q[ed - 1]]) q[ed - 1] = q[ed], ed--;
    int ttt = i < l ? max(0, a[q[op]]) : a[q[op]];
    d[i] += ttt - last;
    last = ttt;
  }
}
int main() {
  scanf("%d%d", &m, &n);
  for (int i = 1; i <= m; i++) {
    int len;
    scanf("%d", &len);
    for (int j = 1; j <= len; j++) scanf("%d", &a[j]);
    if (n >= len * 2) {
      solve1(len);
    } else
      solve2(len);
  }
  long long tot = 0;
  for (int i = 1; i <= n; i++) {
    tot += d[i];
    printf("%I64d ", tot);
  }
  fclose(stdin);
  fclose(stdout);
  return 0;
}
