#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<iomanip>
#include<queue>
#include<list>
#include<math.h>
#include<cctype>
#include<map>
#include<stack>
#define maxn 200001000
using namespace std;
typedef long long ll;
typedef unsigned long wf;
typedef unsigned int u32;
typedef unsigned long long u64;
int tree[maxn];
int va[maxn],deep;
int root,n,bh=1,a,maxx=-10;
void push(int x){
int p=1;
while(tree[p]){
if(x<=tree[p])p*=2;
else{
p=p*2+1;
}
}
tree[p]=x;
}
void PostOrder(int x,int deep){
if(tree[x*2])
PostOrder(x*2,deep+1);
if(tree[x*2+1])
PostOrder(x*2+1,deep+1);
va[bh++]=tree[x];
if(tree[x*2]==0||tree[x*2+1]==0)
maxx=max(deep,maxx);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
push(a);
}
// for(int i=1;i<=n*5;i++){
// cout<<tree[i]<<" ";
// }
PostOrder(1,1);
cout<<"deep="<<maxx<<"\n";
for(int i=1;i<bh;i++){
cout<<va[i]<<"\n";
}
return 0;
}
感谢