#include <iostream>
#include<queue>
using namespace std;
class node {
public:
int data;
node* left;
node* right;
node(int d) {
data = d;
left = NULL;
right = NULL;
}
};
node* buildTree(){
queue<node*>q;
int d;cin>>d;
if(d==-1)return NULL;
node*head=new node(d);
q.push(head);
int lc,rc;
while(!q.empty()){
node*f=q.front();
q.pop();
cin>>lc>>rc;
if(lc!=-1){
f->left=new node(lc);
q.push(f->left);
}
if(rc!=-1){
f->right=new node(rc);
q.push(f->right);
}
}
return head;
}
void printPreOrder(node* &root){
if(root==NULL)return;
cout<<root->data<<" ";
printPreOrder(root->left);
printPreOrder(root->right);
}
int main()
{
node*root=buildTree();
printPreOrder(root);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxxdWV1ZT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3Mgbm9kZSB7CnB1YmxpYzoKICAgIGludCBkYXRhOwogICAgbm9kZSogbGVmdDsKICAgIG5vZGUqIHJpZ2h0OwogICAgbm9kZShpbnQgZCkgewogICAgICAgIGRhdGEgPSBkOwogICAgICAgIGxlZnQgPSBOVUxMOwogICAgICAgIHJpZ2h0ID0gTlVMTDsKICAgIH0KfTsKCm5vZGUqIGJ1aWxkVHJlZSgpewogICAgcXVldWU8bm9kZSo+cTsKICAgIGludCBkO2Npbj4+ZDsKICAgIGlmKGQ9PS0xKXJldHVybiBOVUxMOwogICAgbm9kZSpoZWFkPW5ldyBub2RlKGQpOwogICAgcS5wdXNoKGhlYWQpOwogICAgaW50IGxjLHJjOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgbm9kZSpmPXEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGNpbj4+bGM+PnJjOwogICAgICAgIGlmKGxjIT0tMSl7CiAgICAgICAgICAgIGYtPmxlZnQ9bmV3IG5vZGUobGMpOwogICAgICAgICAgICBxLnB1c2goZi0+bGVmdCk7CiAgICAgICAgfQogICAgICAgIGlmKHJjIT0tMSl7CiAgICAgICAgICAgIGYtPnJpZ2h0PW5ldyBub2RlKHJjKTsKICAgICAgICAgICAgcS5wdXNoKGYtPnJpZ2h0KTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gaGVhZDsKfQoKdm9pZCBwcmludFByZU9yZGVyKG5vZGUqICZyb290KXsKCWlmKHJvb3Q9PU5VTEwpcmV0dXJuOwoJY291dDw8cm9vdC0+ZGF0YTw8IiAiOwoJcHJpbnRQcmVPcmRlcihyb290LT5sZWZ0KTsKCXByaW50UHJlT3JkZXIocm9vdC0+cmlnaHQpOwp9CgppbnQgbWFpbigpCnsKICAgIG5vZGUqcm9vdD1idWlsZFRyZWUoKTsKICAgIHByaW50UHJlT3JkZXIocm9vdCk7Cn0K