#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<set>
using namespace std;
#define maxn 110
int HashTable[maxn]={0};
int num=0;
int Maxdepth=0;
vector<int>child[maxn];
void DFS(int index,int depth)
{
if(child[index].size()==0)
{
if(depth>Maxdepth)
{
Maxdepth=depth;
}
HashTable[depth]++;
}
for(int i=0;i<child[index].size();i++)
{
DFS(child[index][i],depth+1);
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
{
int parent,ch;
scanf("%d",&parent);
int a;
scanf("%d",&a);
for(int j=0;j<a;j++)
{
scanf("%d",&ch);
child[parent].push_back(ch);
}
}
DFS(1,0);
printf("%d",HashTable[0]);
for(int i=1;i<=Maxdepth;i++)
{
printf(" %d",HashTable[i]);
}
return 0;
}