#include<bits/stdc++.h>
using namespace std;
class tree
{
public:
int data;
tree*left;
tree*right;
tree(int d)
{
data=d;
left=NULL;
right=NULL;
}
};
tree*build()
{
int d;
cin>>d;
if(d==-1) return NULL;
tree*root=new tree(d);
root->left=build();
root->right=build();
return root;
}
void verticalorderprint(tree*root,int dist,map<int,int>&m)
{
if(root->left==0 && root->right==0)
return;
m[dist]=root->data;
verticalorderprint(root->left,dist+=-1,m);
verticalorderprint(root->right,dist+=1,m);
}
int main()
{
tree*root=build();
map<int,int> m;
verticalorderprint(root,0,m);
for(auto it=m.begin();it!=m.end();it++) cout<<it->second<<" ";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3MgdHJlZQp7CglwdWJsaWM6CglpbnQgZGF0YTsKCXRyZWUqbGVmdDsKCXRyZWUqcmlnaHQ7Cgl0cmVlKGludCBkKQoJewoJCWRhdGE9ZDsKCQlsZWZ0PU5VTEw7CgkJcmlnaHQ9TlVMTDsKCX0KfTsKdHJlZSpidWlsZCgpCnsKCWludCBkOwoJY2luPj5kOwoJaWYoZD09LTEpIHJldHVybiBOVUxMOwoJdHJlZSpyb290PW5ldyB0cmVlKGQpOwoJcm9vdC0+bGVmdD1idWlsZCgpOwoJcm9vdC0+cmlnaHQ9YnVpbGQoKTsKCXJldHVybiByb290Owp9CnZvaWQgdmVydGljYWxvcmRlcnByaW50KHRyZWUqcm9vdCxpbnQgZGlzdCxtYXA8aW50LGludD4mbSkKewogIGlmKHJvb3QtPmxlZnQ9PTAgJiYgcm9vdC0+cmlnaHQ9PTApCiAgcmV0dXJuOwogICAgCiAgICBtW2Rpc3RdPXJvb3QtPmRhdGE7CiAgICAKICAgIHZlcnRpY2Fsb3JkZXJwcmludChyb290LT5sZWZ0LGRpc3QrPS0xLG0pOwogICAgdmVydGljYWxvcmRlcnByaW50KHJvb3QtPnJpZ2h0LGRpc3QrPTEsbSk7Cn0KaW50IG1haW4oKQp7CiAgdHJlZSpyb290PWJ1aWxkKCk7CiAgICBtYXA8aW50LGludD4gbTsKICAgIHZlcnRpY2Fsb3JkZXJwcmludChyb290LDAsbSk7CiAgICBmb3IoYXV0byBpdD1tLmJlZ2luKCk7aXQhPW0uZW5kKCk7aXQrKykgY291dDw8aXQtPnNlY29uZDw8IiAiOwogICAgCiAgICByZXR1cm4gMDsKfQ==