#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
const int MAXN = 1000005;
int fa[MAXN];
int find(int x){ return fa[x] == x ? x : fa[x] = find(fa[x]); }
void uni(int a, int b){ a = find(a); b = find(b); if(a != b) fa[a] = b; }
int main(){
int n, m;
scanf("%d%d", &n, &m);
for(int i = 1; i <= n + m; i++) fa[i] = i;
for(int g = 1; g <= m; g++){
int k;
scanf("%d", &k);
int groupNode = n + g;
for(int j = 0; j < k; j++){
int u;
scanf("%d", &u);
uni(u, groupNode);
}
}
// 统计每个根下的用户数
unordered_map<int,int> cnt;
for(int i = 1; i <= n; i++){
cnt[find(i)];
}
for(int i = 1; i <= n; i){
if(i > 1) printf(" ");
printf("%d", cnt[find(i)]);
}
printf("\n");
return 0;
}