#include<iostream>
using namespace std;
struct TreeNode
{
int father = 0;
int level = 0;
bool isLeaf = true;
};
TreeNode t[100];
int main()
{
int N, M;
while(cin>>N>>M)
{
//input
int ID, K, child, num_level[100] = {0};
for(int i = 0; i < M; i++)
{
cin>>ID>>K;
for(int j = 0; j < K; j++)
{
t[ID].isLeaf = false;
cin>>child;
t[child].father = ID;
}
}
t[1].level = 1;
int l = 1;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
if(t[j].father == i)
{
t[j].level = t[t[j].father].level + 1;
if(t[j].level > l)
{
l = t[j].level;
}
}
}
}
for(int i = 1; i <= N; i++)
{
if(t[i].isLeaf)
num_level[t[i].level]++;
}
for(int i = 1; i < l; i++)
{
cout<<num_level[i]<<" ";
}
cout<<num_level[l]<<endl;
}
}