#include <bits/stdc++.h>
using namespace std;
int n, w;
vector<int> row;
map<int, pair<vector<int>, vector<int> > > event;
long long diff[1000001];
int main(void) {
  cin >> n >> w;
  for (int i = 0; i < n; i++) {
    int len;
    cin >> len;
    event.clear();
    for (int j = 0; j < len; j++) {
      int x;
      cin >> x;
      event[j].first.push_back(x);
      event[w - len + j + 1].second.push_back(x);
    }
    event[0].first.push_back(0);
    event[w - len].second.push_back(0);
    event[len].first.push_back(0);
    event[w].second.push_back(0);
    map<int, int> mx;
    for (auto it = event.begin(); it != event.end(); it++) {
      int cur_mx, lst_mx;
      if (mx.size() == 0) {
        lst_mx = 0;
      } else {
        auto tmp = mx.end();
        lst_mx = (--tmp)->first;
        assert(tmp->second != 0);
      }
      for (int j = 0; j < (it->second).first.size(); j++) {
        int x = (it->second).first[j];
        if (mx.count(x))
          mx[x]++;
        else
          mx[x] = 1;
      }
      for (int j = 0; j < (it->second).second.size(); j++) {
        int x = (it->second).second[j];
        assert(mx.count(x));
        mx[x]--;
        if (mx[x] == 0) mx.erase(x);
      }
      if (mx.size() == 0) {
        cur_mx = 0;
      } else {
        auto tmp = mx.end();
        cur_mx = (--tmp)->first;
        assert(tmp->second != 0);
      }
      if (cur_mx != lst_mx) {
        diff[it->first] += (cur_mx - lst_mx);
      }
    }
  }
  long long cur = 0;
  for (int i = 0; i < w; i++) {
    cur += diff[i];
    cout << cur << " ";
  }
  cout << endl;
}
