#include <bits/stdc++.h>
using namespace std;
const int N=1e7;
int n,ans=0;
struct tree{
int data,l,r;
}a[N];
void add(int k){
for (int i=1;i;){
if (k>a[i].data){
if (a[i].r==0){
a[i].r=k;
a[a[i].r].data=k;
break ;
}
i=a[i].r;
}
if (k<a[i].data){
if (a[i].l==0){
a[i].l=k;
a[a[i].l].data=k;
break ;
}
i=a[i].l;
}
}
}
void sc(int k){
if (a[k].l!=0){
sc(a[k].l);
}
if (a[k].r!=0){
sc(a[k].r);
}
cout<<a[k].data<<endl;
}
void dfs(int step,int now){
if (a[now].l==0 && a[now].r==0){
ans=max(ans,step);
return ;
}
if (a[now].l) dfs(step+1,a[now].l);
if (a[now].r) dfs(step+1,a[now].r);
}
int main(){
cin>>n;
for (int i=1;i<=n;i++){
int k;
cin>>k;
if (i==1){
a[i].data=k;
continue;
}
add(k);
}
dfs(1,1);
cout<<"deep="<<ans<<endl;
sc(1);
return 0;
}