#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
int val;
TreeNode* right;
TreeNode* left;
TreeNode(int val):left(nullptr),right(nullptr),val(val){};
};
vector<int>top(TreeNode* root){
vector<int>ans;
if(root == nullptr)return ans;
map<int,int>mp;
queue<pair<TreeNode*,int>>q;
q.push({root,0});
while(!q.empty()){
auto [u,v]= q.front();
q.pop();
mp[v]=u->val;
if(u->left){
q.push({u->left,v-1});
}
if(u->right){
q.push({u->right,v+1});
}
}
for(auto [v,val]:mp){
ans.push_back(val);
}
return ans;
}
TreeNode* buildTree(){
int x;cin>>x;
if(x==-1)return nullptr;
TreeNode* root = new TreeNode(x);
queue<TreeNode*>q;
q.push(root);
while(!q.empty()){
auto u = q.front();
q.pop();
if(cin>>x && x!=-1){
u->left = new TreeNode(x);
q.push(u->left);
}
if(cin>>x && x!=-1){
u->right = new TreeNode(x);
q.push(u->right);
}
}
return root;
}
int main() {
TreeNode* root = buildTree();
vector<int>ans = top(root);
for(auto x : ans){
cout<<x<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBUcmVlTm9kZXsKCWludCB2YWw7CglUcmVlTm9kZSogcmlnaHQ7CglUcmVlTm9kZSogbGVmdDsKCVRyZWVOb2RlKGludCB2YWwpOmxlZnQobnVsbHB0cikscmlnaHQobnVsbHB0ciksdmFsKHZhbCl7fTsKfTsKCnZlY3RvcjxpbnQ+dG9wKFRyZWVOb2RlKiByb290KXsKICB2ZWN0b3I8aW50PmFuczsKICBpZihyb290ID09IG51bGxwdHIpcmV0dXJuIGFuczsKICAgbWFwPGludCxpbnQ+bXA7CiAgcXVldWU8cGFpcjxUcmVlTm9kZSosaW50Pj5xOwogIHEucHVzaCh7cm9vdCwwfSk7CiAgCiAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgCWF1dG8gW3Usdl09IHEuZnJvbnQoKTsKICAJcS5wb3AoKTsKICAJCiAgCQltcFt2XT11LT52YWw7CiAgCQogIAlpZih1LT5sZWZ0KXsKICAJCXEucHVzaCh7dS0+bGVmdCx2LTF9KTsKICAJfQogIAkKICAJaWYodS0+cmlnaHQpewogIAkJcS5wdXNoKHt1LT5yaWdodCx2KzF9KTsKICAJfQogIH0KICAKICBmb3IoYXV0byBbdix2YWxdOm1wKXsKICAJYW5zLnB1c2hfYmFjayh2YWwpOwogIH0KICByZXR1cm4gYW5zOwp9ClRyZWVOb2RlKiBidWlsZFRyZWUoKXsKCWludCB4O2Npbj4+eDsKCWlmKHg9PS0xKXJldHVybiBudWxscHRyOwoJVHJlZU5vZGUqIHJvb3QgPSBuZXcgVHJlZU5vZGUoeCk7CgkKCXF1ZXVlPFRyZWVOb2RlKj5xOwoJcS5wdXNoKHJvb3QpOwoJCgl3aGlsZSghcS5lbXB0eSgpKXsKCQlhdXRvIHUgPSBxLmZyb250KCk7CgkJcS5wb3AoKTsKCQkKCQlpZihjaW4+PnggJiYgeCE9LTEpewoJCQl1LT5sZWZ0ID0gbmV3IFRyZWVOb2RlKHgpOwoJCQlxLnB1c2godS0+bGVmdCk7CgkJfQoJCQoJCWlmKGNpbj4+eCAmJiB4IT0tMSl7CgkJCXUtPnJpZ2h0ID0gbmV3IFRyZWVOb2RlKHgpOwoJCQlxLnB1c2godS0+cmlnaHQpOwoJCX0KCX0KCXJldHVybiByb290Owp9CmludCBtYWluKCkgewogICAgVHJlZU5vZGUqIHJvb3QgPSBidWlsZFRyZWUoKTsKICAgdmVjdG9yPGludD5hbnMgPSB0b3Aocm9vdCk7CiAgICAKICAgIGZvcihhdXRvIHggOiBhbnMpewogICAgCQogICAgCWNvdXQ8PHg8PGVuZGw7CiAgICB9CglyZXR1cm4gMDsKfQ==