#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N=10010;
vector<int>v[N];
bool din[N];
int son[N];
int n;
int dfs(int u)
{
int maxv=0;
son[u]=-1;
for(int i=0;i<v[u].size();i++)
{
int depth=dfs(v[u][i]);
if(depth>maxv)
{
maxv=depth;
son[u]=v[u][i];
}
}
return maxv+1;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int cnt,x;
cin>>cnt;
while(cnt--)
{
cin>>x;
din[x+1]=true;
v[i].push_back(x+1);
}
sort(v[i].begin(),v[i].end());
}
int root=1;
while(din[root])root++;
cout<<dfs(root)<<endl;
cout<<root-1;
while(son[root]!=-1)
{
cout<<" "<<son[root]-1;
root=son[root];
}
}