#include <bits/stdc++.h>
using namespace std;
int n, m, k, input[500005], uf[500005];
int find(int now) {
  if (uf[now] < 0)
    return now;
  else
    return uf[now] = find(uf[now]);
}
void merge(int a, int b) {
  a = find(a), b = find(b);
  if (a == b) return;
  if (uf[a] < uf[b]) {
    uf[a] += uf[b];
    uf[b] = a;
  } else {
    uf[b] += uf[a];
    uf[a] = b;
  }
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 0; i <= n; i++) uf[i] = -1;
  for (int i = 0; i < m; i++) {
    scanf("%d", &k);
    for (int j = 0; j < k; j++) {
      scanf("%d", &input[j]);
    }
    for (int j = 0; j < k - 1; j++) {
      merge(input[j], input[j + 1]);
    }
  }
  for (int i = 1; i <= n; i++) {
    int now = find(i);
    printf("%d ", -1 * uf[now]);
  }
  return 0;
}
