#include <iostream>
#include <map>
#include <vector>
using namespace std;
map<int, vector<int> >Tree;
int record[101] = { 0 };
void DFS(int ID, int level)
{
if (Tree[ID].empty())
{
++record[level];
return;
}
vector<int>::iterator ite = Tree[ID].begin();
for (; ite != Tree[ID].end(); ++ite)
{
DFS(*ite, level + 1);
}
}
int main()
{
int N, M;
cin >> N >> M;
int ID, K, child;
int p = N - M;
while (M--)
{
cin >> ID >> K;
while (K--)
{
cin >> child;
Tree[ID].push_back(child);
}
}
DFS(1, 0);
int cnt = record[0];
cout << record[0];
for (int i = 1; cnt < p; ++i)
{
cout << ' ' << record[i];
cnt += record[i];
}
cout << endl;
return 0;
}