#include <bits/stdc++.h>
using namespace std;
int vis[1010];
vector<int> table[1010];
vector<int> val_person[1010];
bool cmp(int a, int b){
return a > b;
}
void getHorde(int people, int & ans){
if(vis[people]) return;
vector<int>::iterator it = table[people].begin();
ans++;
vis[people] = 1;
while(it != table[people].end()){
for(vector<int>::iterator p = val_person[*it].begin(); p != val_person[*it].end(); ++p)
getHorde(*p, ans);
it++;
}
}
int main(){
memset(vis, 0, 4040);
int n;
cin >> n;
for(int i = 1; i <= n; ++i){
int m, temp;
char ch;
cin >> m >> ch;
for(int j = 1; j <= m; ++j){
cin >> temp;
table[i].push_back(temp);
val_person[temp].push_back(i);
}
}
vector<int> v;
for(int i = 1; i <= n; ++i){
int val = 0;
getHorde(i, val);
if(val) v.push_back(val);
}
sort(v.begin(), v.end(), cmp);
cout << v.end() - v.begin() << endl;
for(int i = 0; i < v.end() - v.begin(); ++i){
if(i) cout << " ";
cout << v[i];
}
}