#include <bits/stdc++.h>
using namespace std;void topo()
{for(int i=1;i<=n;i++){//入度为0,则加入 答案 和 入度为0的点中if(IN[i]==0){zero_in.push_back(i);ans.push_back(i);}}while(!zero_in.empty()){int zp=zero_in.front();zero_in.erase(zero_in.begin());//取出 入度为0的点,并删除for(int i=head[zp];i;i=edge[i].nxt){int to=edge[i].to;//删除该点后,与之相连的子节点的入度就少了1IN[to]--;//删去该点后,子节点可能出现新的入度为0的点if(IN[to]==0){zero_in.push_back(to);ans.push_back(to);}}}
}int main()
{cin>>n;for(int i=1;i<=n;i++){while(true){cin>>to;if(to==0) break;add(i,to);//记录每个点的入度IN[to]++;}}topo();return 0;
}