#include <stdio.h>
#define MaxSize 10
#define Null -1
typedef int Tree;
struct TNode{
int Data;
Tree Left;
Tree Right;;
}T[MaxSize],P;
int Read(int n)
{
int cheek[10] = {0};
int root=Null,i=0;
char l,r;
for(i=0;i<n;i++)
{
T[i].Data = i;
scanf("\n%c %c",&l,&r);
if(l=='-')
{
T[i].Left = Null;
}
else
{
T[i].Left = l-'0';
cheek[l-'0'] = 1;
}
if(r=='-')
{
T[i].Right = Null;
}
else
{
T[i].Right = r-'0';
cheek[r-'0'] = 1;
}
}
for(i=0;i<n;i++)
{
if(cheek[i]==0)
{
root = i;
}
}
return root;
}
void Print(Tree R,int n)
{
int Q[10] = {0},m=0,i=0,rear=-1,front=-1;
for(i=0;i<n;i++)
{
if(T[i].Right==Null&&T[i].Left==Null)
{
m++;
}
}
Q[++rear] = R;
while(front!=rear)
{
P = T[Q[++front]];
if(P.Left!=Null)
{
Q[++rear] = P.Left;
}
if(P.Right!=Null)
{
Q[++rear] = P.Right;
}
if(P.Left==Null&&P.Right==Null)
{
printf("%d",P.Data);
if(m-->1)
{
printf(" ");
}
}
}
}
int main(void)
{
Tree R;
int n;
scanf("%d",&n);
R = Read(n);
Print(R,n);
return 0;
}