#include<bits/stdc++.h>
using namespace std;
int n,maxx=1;
struct node{
int dep;
int l;
int r;
int fa;
int ans;
}d[300005];
int tree(int x){
if(d[x].l!=0) tree(d[x].l);
if(d[x].r!=0) tree(d[x].r);
cout<<d[x].ans<<'\n';
}
int main(){
d[1].dep=1;
cin>>n;
cin>>d[1].ans;
for(int i=2;i<=n;i++){
int j=1;
cin>>d[i].ans;
while(1){
if(d[i].ans<=d[j].ans){
if(d[j].l==0){
d[i].fa=j;
d[j].l=i;
d[i].dep=d[j].dep+1;
break;
}
else j=d[j].l;
}
else{
if(d[j].r==0){
d[j].r=i;
d[i].fa=j;
d[i].dep=d[j].dep+1;
break;
}
else j=d[j].r;
}
}
maxx=max(d[i].dep,maxx);
}
cout<<"deep="<<maxx<<'\n';
tree(1);
return 0;
}