
#include <bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>
#include <queue>
using namespace std;
const int maxn = 100010;
struct node{
//bool leave;//是否是叶节点
vector<int> child;
}Node[maxn];
void BFS(int root){
if(Node[root].child.size() == 0){
printf("1\n");
return;
}else{
printf("0");
}
queue<int> que;
int size = Node[root].child.size();
for(int i=0;i<size;++i){
que.push(Node[root].child[i]);
}
while(!que.empty()){
int num = 0;//每一层的叶节点数
int s = que.size();
for(int i=0;i<s;++i){
int first = que.front();
que.pop();
if(Node[first].child.size() == 0){
num++;
}else{
int len = Node[first].child.size();
for(int j =0;j<len;++j){
que.push(Node[first].child[j]);
}
}
}
printf(" %d",num);
}
}
int main(){
/*for(int i=0;i<maxn;++i){
Node[i].leave = true;
}*/
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;++i){
int root,number,children;
scanf("%d%d",&root,&number);
//Node[root].leave = false;//为非叶节点
for(int j=0;j<number;++j){
int t;
scanf("%d",&t);
Node[root].child.push_back(t);
}
}
BFS(1);
system("pause");
return 0;
}