#include <iostream>
#include <vector>
using namespace std;
#define MAXN 102
#define SONMAXN 10
struct Node{
int father;
int layer;
vector<int> son;
}node[MAXN];
void DFS(int p,int layer){
if(node[p].son.size()==0){
node[p].layer=layer;
return;
}else{
for(int i=0;i<node[p].son.size();i++){
DFS(node[p].son[i],layer+1);
}
}
}
int main()
{
int nodenum,noleaf;
cin>>nodenum>>noleaf;
while(noleaf--){
int id,num;
cin>>id>>num;
while(num--){
int x;
cin>>x;
node[id].son.push_back(x);
}
}
node[1].father=0;
node[1].layer=1;
DFS(1,1);
int res[MAXN]={0};
int maxn=0;
for(int i=1;i<MAXN;i++){
if(node[i].son.size()!=0){
continue;
}
if(node[i].layer>maxn){
maxn=node[i].layer;
}
res[node[i].layer]++;
}
for(int i=1;i<=maxn;i++){
if(i!=1){
cout<<" ";
}
cout<<res[i];
}
return 0;
}
easy