#include<stdio.h>
typedef struct node Tree;
struct node
{
int element;
int left;
int right;
};
Tree tree[10];
Tree queue[10];
int ans[10];
int cnt=0;
int front,rear;
void enqueue(Tree T)
{
rear=(rear+1)%10;
queue[rear]=T;
}
Tree dequeue()
{
front=(front+1)%10;
return queue[front];
}
void findLeaves(int root)
{
int i;
front=rear=0;
enqueue(tree[root]);
while(front!=rear){
Tree v=dequeue();
if(v.left!=-1)enqueue(tree[v.left]);
if(v.right!=-1)enqueue(tree[v.right]);
if(v.left==-1&&v.right==-1)ans[cnt++]=v.element;
}
}
int main()
{
// freopen("test.txt","r",stdin);
int i,n;
char l,r;
int root[10];
scanf("%d",&n);
for(i=0;i<n;i++){
root[i]=1;
tree[i].element=i;
tree[i].left=-1;
tree[i].right=-1;
}
getchar();
for(i=0;i<n;i++){
scanf("%c %c",&l,&r);
getchar();
if(l!='-'){
root[l-'0']=0;
tree[i].left=l-'0';
}
if(r!='-'){
root[r-'0']=0;
tree[i].right=r-'0';
}
}
for(i=0;i<n;i++){
if(root[i]){
findLeaves(i);
break;
}
}
for(i=0;i<cnt-1;i++){
printf("%d ",ans[i]);
}
printf("%d",ans[cnt-1]);
return 0;
}