#include <bits/stdc++.h>
using namespace std;
struct node
{
int v,l,r;
}tree[300001];
void print(int i)
{
if(tree[i].v!=0)
{
print(tree[i].l);
print(tree[i].r);
cout<<tree[i].v<<endl;
}
}
int dfs(int i)
{
int maxn;
if(tree[i].v!=0)
{
maxn=max(dfs(tree[i].l),dfs(tree[i].r))+1;
}
return maxn;
}
int cnt=0;
int main()
{
int n,s;
cin>>n;
cin>>s;
tree[1].v=s;
cnt++;
for(int i=2;i<=n;i++)
{
cin>>s;
int tot=1;
while(tree[tot].v!=0)
{
if(tree[tot].v>=s && tree[tot].l==0)
{
tree[tot].l=i;
}
else if(tree[tot].v<s && tree[tot].r==0)
{
tree[tot].r=i;
}
if(tree[tot].v<s)
tot=tree[tot].r;
else
tot=tree[tot].l;
}
tree[i].v=s;
}
cout<<"deep="<<dfs(1)<<endl;
print(1);
return 0;
}