#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1000011;
const long long INF = (1 << 29) + 123;
const long long MOD = 1000000007;
const long double PI = 4 * atan((long double)1);
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, w;
  cin >> n >> w;
  int l[n];
  int x;
  long long ans[w], pf[w + 1];
  for (int i = 0; i < w + 1; i++) ans[i] = pf[i] = 0;
  for (int i = 0; i < n; i++) {
    cin >> l[i];
    deque<pair<long long, int>> store;
    int window = w - l[i] + 1;
    int best = -INF;
    for (int j = 0; j < w; j++) {
      if (j < l[i]) {
        cin >> x;
        while (!store.empty() && x >= store.back().first) store.pop_back();
        store.push_back(make_pair(x, j));
        best = max(best, x);
      } else if (j == l[i] && j < window) {
        j = window;
        if (best >= 0) {
          pf[l[i]] += best;
          pf[window] -= best;
        } else {
          if (window - 1 < w - window + 1) {
            pf[window - 1] += best;
            pf[w - window + 1] -= best;
          }
        }
      }
      if (j == w) break;
      while (store.front().second <= j - window) store.pop_front();
      if (store.front().first > 0 || (j >= window - 1 && j <= w - window)) {
        ans[j] += 1LL * store.front().first;
      }
    }
  }
  long long total = 0;
  for (int i = 0; i < w; i++) {
    total += pf[i];
    cout << ans[i] + total << " ";
  }
  cout << endl;
  return 0;
}
