#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();
if(mp.find(v)==mp.end()){
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+bXA7CiAgcXVldWU8cGFpcjxUcmVlTm9kZSosaW50Pj5xOwogIHEucHVzaCh7cm9vdCwwfSk7CiAgCiAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgCWF1dG8gW3Usdl09IHEuZnJvbnQoKTsKICAJcS5wb3AoKTsKICAJaWYobXAuZmluZCh2KT09bXAuZW5kKCkpewogIAkJbXBbdl09dS0+dmFsOwogIAl9CiAgCWlmKHUtPmxlZnQpewogIAkJcS5wdXNoKHt1LT5sZWZ0LHYtMX0pOwogIAl9CiAgCQogIAlpZih1LT5yaWdodCl7CiAgCQlxLnB1c2goe3UtPnJpZ2h0LHYrMX0pOwogIAl9CiAgfQogIAogIGZvcihhdXRvIFt2LHZhbF06bXApewogIAlhbnMucHVzaF9iYWNrKHZhbCk7CiAgfQogIHJldHVybiBhbnM7Cn0KVHJlZU5vZGUqIGJ1aWxkVHJlZSgpewoJaW50IHg7Y2luPj54OwoJaWYoeD09LTEpcmV0dXJuIG51bGxwdHI7CglUcmVlTm9kZSogcm9vdCA9IG5ldyBUcmVlTm9kZSh4KTsKCQoJcXVldWU8VHJlZU5vZGUqPnE7CglxLnB1c2gocm9vdCk7CgkKCXdoaWxlKCFxLmVtcHR5KCkpewoJCWF1dG8gdSA9IHEuZnJvbnQoKTsKCQlxLnBvcCgpOwoJCQoJCWlmKGNpbj4+eCAmJiB4IT0tMSl7CgkJCXUtPmxlZnQgPSBuZXcgVHJlZU5vZGUoeCk7CgkJCXEucHVzaCh1LT5sZWZ0KTsKCQl9CgkJCgkJaWYoY2luPj54ICYmIHghPS0xKXsKCQkJdS0+cmlnaHQgPSBuZXcgVHJlZU5vZGUoeCk7CgkJCXEucHVzaCh1LT5yaWdodCk7CgkJfQoJfQoJcmV0dXJuIHJvb3Q7Cn0KaW50IG1haW4oKSB7CiAgICBUcmVlTm9kZSogcm9vdCA9IGJ1aWxkVHJlZSgpOwogICB2ZWN0b3I8aW50PmFucyA9IHRvcChyb290KTsKICAgIAogICAgZm9yKGF1dG8geCA6IGFucyl7CiAgICAJCiAgICAJY291dDw8eDw8ZW5kbDsKICAgIH0KCXJldHVybiAwOwp9