#include <bits/stdc++.h>
using namespace std;
class dsu {
  vector<int> parent;
  vector<int> sz;

 public:
  dsu(int n) : parent(n), sz(n, 1) {
    for (int i = 0; i < n; i++) {
      parent[i] = i;
    }
  }
  int find(int a) {
    if (parent[a] == a) return a;
    return parent[a] = find(parent[a]);
  }
  bool isConnected(int a, int b) { return find(a) == find(b); }
  void join(int a, int b) {
    a = find(a);
    b = find(b);
    if (a == b) return;
    if (sz[a] > sz[b]) {
      parent[b] = a;
      sz[a] += sz[b];
    } else {
      parent[a] = b;
      sz[b] += sz[a];
    }
  }
  int getSz(int a) { return sz[find(a)]; }
};
int main() {
  int n, m;
  cin >> n >> m;
  dsu ds(n + 1);
  int sz;
  for (int i = 0; i < m; i++) {
    cin >> sz;
    if (sz == 0) continue;
    int a[sz];
    for (int i = 0; i < sz; i++) cin >> a[i];
    for (int i = 1; i < sz; i++) {
      ds.join(a[i], a[i - 1]);
    }
  }
  for (int i = 1; i <= n; i++) {
    cout << ds.getSz(i) << " ";
  }
  return 0;
}
