#include<stdio.h>
#define N 110
int l[N],r[N],w[N],p[N],idx;
void insert(int u,int x,int fa)
{
if( idx == 0 ) // 第一个节点特殊处理
{
u = idx++;
p[u] = -1;
w[u] = x;
return;
}
if( u == -1 )
{
u = idx++;
if( x < w[fa] ) l[fa] = u; // 注意, 还要更新lr
else r[fa] = u;
p[u] = w[fa]; // 然后更新本节点
w[u] = x;
return;
}
if( x < w[u] ) insert(l[u],x,u);
else insert(r[u],x,u);
}
void dfs(int u,int t) // t=012分别表示前中后序遍历
{
if (u == -1) return;
if (t == 0) printf("%d ", w[u]);
dfs(l[u], t);
if (t == 1) printf("%d ", w[u]); // w 换成 p即输出对应节点的父节点
dfs(r[u], t);
if (t == 2) printf("%d ", w[u]);
}
int main()
{
int n;
scanf("%d",&n);
memset(l,-1,sizeof l);
memset(r,-1,sizeof r);
while( n-- )
{
int x;
scanf("%d",&x);
insert(0,x,-1); // 从根节点开始
}
dfs(0,1);
return 0;
}