#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
TreeNode* left;
TreeNode* right;
int data;
TreeNode(int val):left(nullptr),right(nullptr),data(val){};
};
vector<int>preT(TreeNode* root){
vector<int>pre;
if(root == nullptr)
return pre;
stack<TreeNode*>st;
st.push(root);
while(!st.empty()){
auto node = st.top();st.pop();
pre.push_back(node->data);
if(node->right){
st.push(node->right);
}
if(node->left){
st.push(node->left);
}
}
return pre;
}
TreeNode* buildTree(){
int x;
cin>>x;
if(x==-1)return nullptr;
TreeNode* root = new TreeNode(x);
queue<TreeNode*>st;
st.push(root);
while(!st.empty()){
auto node = st.front();st.pop();
if(cin>>x && x != -1){
node->left = new TreeNode(x);
st.push(node->left);
}
if(cin>>x && x != -1){
node->right = new TreeNode(x);
st.push(node->right);
}
}
return root;
}
int main() {
TreeNode* root = buildTree();
vector<int>pre = preT(root);
for(int x:pre)cout<< x <<" ";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVHJlZU5vZGV7CglUcmVlTm9kZSogbGVmdDsKCVRyZWVOb2RlKiByaWdodDsKCQoJaW50IGRhdGE7CglUcmVlTm9kZShpbnQgdmFsKTpsZWZ0KG51bGxwdHIpLHJpZ2h0KG51bGxwdHIpLGRhdGEodmFsKXt9Owp9OwoKdmVjdG9yPGludD5wcmVUKFRyZWVOb2RlKiByb290KXsKCXZlY3RvcjxpbnQ+cHJlOwoJCWlmKHJvb3QgPT0gbnVsbHB0cikKICAgICAgICByZXR1cm4gcHJlOwoJc3RhY2s8VHJlZU5vZGUqPnN0OwoJCglzdC5wdXNoKHJvb3QpOwoKCXdoaWxlKCFzdC5lbXB0eSgpKXsKCQlhdXRvIG5vZGUgPSBzdC50b3AoKTtzdC5wb3AoKTsKCQkKCQlwcmUucHVzaF9iYWNrKG5vZGUtPmRhdGEpOwoJCQoJICAgIGlmKG5vZGUtPnJpZ2h0KXsKCSAgICAJc3QucHVzaChub2RlLT5yaWdodCk7CgkgICAgfQoJICAgIAoJICAgIGlmKG5vZGUtPmxlZnQpewoJICAgIAlzdC5wdXNoKG5vZGUtPmxlZnQpOwoJICAgIH0KCX0KCQpyZXR1cm4gcHJlOwkKfQoKVHJlZU5vZGUqIGJ1aWxkVHJlZSgpewoJaW50IHg7CgljaW4+Png7CglpZih4PT0tMSlyZXR1cm4gbnVsbHB0cjsKCVRyZWVOb2RlKiByb290ID0gbmV3IFRyZWVOb2RlKHgpOwoJcXVldWU8VHJlZU5vZGUqPnN0OwoJc3QucHVzaChyb290KTsKCQoJd2hpbGUoIXN0LmVtcHR5KCkpewoJCWF1dG8gbm9kZSA9IHN0LmZyb250KCk7c3QucG9wKCk7CgkJCgkJCgkJaWYoY2luPj54ICYmIHggIT0gLTEpewoJCQlub2RlLT5sZWZ0ID0gbmV3IFRyZWVOb2RlKHgpOwoJCQlzdC5wdXNoKG5vZGUtPmxlZnQpOwoJCX0KCQkKCQoJCWlmKGNpbj4+eCAmJiB4ICE9IC0xKXsKCQkJbm9kZS0+cmlnaHQgPSBuZXcgVHJlZU5vZGUoeCk7CgkJCXN0LnB1c2gobm9kZS0+cmlnaHQpOwoJCX0KCX0KCXJldHVybiByb290Owp9CgppbnQgbWFpbigpIHsKICAgIFRyZWVOb2RlKiByb290ID0gYnVpbGRUcmVlKCk7CiAgICB2ZWN0b3I8aW50PnByZSA9IHByZVQocm9vdCk7CiAgICBmb3IoaW50IHg6cHJlKWNvdXQ8PCB4IDw8IiAiOwoJcmV0dXJuIDA7Cn0=