#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
#define MAX 100
struct no{
int layer;
vector <int> next;
}node[MAX];
int n,m;
int laycnt[MAX];
int inq[MAX];
int maxlay=0;
void bfs(){
queue <int> q;
q.push(1);
node[1].layer=1;
while(!q.empty()){
int now=q.front();
q.pop();
int layer=node[now].layer;
maxlay=layer;
for(int i=0;i<node[now].next.size();i++){
int k=node[now].next[i];
node[k].layer=layer+1;
q.push(k);
}
}
}
int main(){
freopen("in.txt","r",stdin);
scanf("%d %d",&n,&m);
for(int i=0;i<m;i++){
int no,cnt;
scanf("%d %d",&no,&cnt);
vector <int> tmp;
while(cnt--){
int x;
scanf("%d",&x);
tmp.push_back(x);
}
node[no].next=tmp;
}
bfs();
for(int i=1;i<=n;i++){
if(node[i].next.size()==0){
laycnt[node[i].layer]++;
}
}
int cc=0;
for(int i=1;i<=maxlay;i++){
cc++;
if(cc==maxlay){
printf("%d\n",laycnt[i]);
}else{
printf("%d ",laycnt[i]);
}
}
return 0;
}