#include<bits/stdc++.h>
using namespace std;
int indgree[2000];
int head[2000];
struct edge{
int to,next;
} edges[50000];
int cnt=0;
int adde(int u,int v)
{
edges[cnt].to=v;
edges[cnt].next=head[u];
head[u]=cnt++;
}
int main ()
{
memset(indgree,0,sizeof indgree);
memset(head,-1,sizeof head);
int n;
cin>>n;
queue<int> q;
for(int i=1;i<=n;i++)
{
int t;
while(1)
{
cin>>t;
if(t==0)break;
indgree[t]++;
adde(i,t);
}
}
for(int i=1;i<=n;i++)
{
if(indgree[i]==0)
{
q.push(i);
}
}
while(!q.empty())
{
int t=q.front();
q.pop();
cout<<t<<" ";
for(int i=head[t];i!=-1;i=edges[i].next){
indgree[edges[i].to]--;
if(indgree[edges[i].to]==0)
q.push(edges[i].to);
}
}
return 0;
}