#include<bits/stdc++.h>
using namespace std;
struct node{
int date=0,l=0,r=0;
}bt[1000010];
int n,r,deep=1;
void build(int x,int r);
void hx(int x);
void dfs(int x,int d);
int main(){
cin>>n;
cin>>r;
bt[r].date=r;
for(int i=2;i<=n;i++){
int num;
cin>>num;
build(num,r);
}
dfs(r,1);
cout<<"deep:"<<deep<<endl;
hx(r);
return 0;
}
void build(int x,int r){
if(x<=bt[r].date){
if(bt[r].l){
build(x,bt[r].l);
}else{
bt[r].l=x;
bt[bt[r].l].date=x;
}
}else{
if(bt[r].r){
build(x,bt[r].r);
}else{
bt[r].r=x;
bt[bt[r].r].date=x;
}
}
}
void hx(int x){
if(bt[x].date){
hx(bt[x].l);
hx(bt[x].r);
cout<<x<<endl;
}
}
void dfs(int x,int d){
if(bt[x].date){
dfs(bt[x].l,d+1);
dfs(bt[x].r,d+1);
deep=max(deep,d);
}
}