#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
int data;
TreeNode* right;
TreeNode* left;
TreeNode(int val):left(nullptr),right(nullptr),data(val){};
};
void helper(TreeNode* root,vector<int>&curr,vector<vector<int>>&ans){
if(!root)return;
curr.push_back(root->data);
if(!root->left && !root->right){
ans.push_back(curr);
}else{
helper(root->left,curr,ans);
helper(root->right,curr,ans);
}
curr.pop_back();
}
vector<vector<int>>print(TreeNode* root){
vector<vector<int>>ans;
if(!root)return ans;
vector<int>curr;
helper(root,curr,ans);
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<vector<int>>ans = print(root);
for(auto x : ans){
for(int y : x){
cout<<y<< " ";
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVHJlZU5vZGV7CglpbnQgZGF0YTsKCVRyZWVOb2RlKiByaWdodDsKCVRyZWVOb2RlKiBsZWZ0OwoJVHJlZU5vZGUoaW50IHZhbCk6bGVmdChudWxscHRyKSxyaWdodChudWxscHRyKSxkYXRhKHZhbCl7fTsKfTsKCnZvaWQgaGVscGVyKFRyZWVOb2RlKiByb290LHZlY3RvcjxpbnQ+JmN1cnIsdmVjdG9yPHZlY3RvcjxpbnQ+PiZhbnMpewoJaWYoIXJvb3QpcmV0dXJuOwoJCgljdXJyLnB1c2hfYmFjayhyb290LT5kYXRhKTsKCWlmKCFyb290LT5sZWZ0ICYmICFyb290LT5yaWdodCl7CgkJYW5zLnB1c2hfYmFjayhjdXJyKTsKCX1lbHNlewoJCWhlbHBlcihyb290LT5sZWZ0LGN1cnIsYW5zKTsKCQloZWxwZXIocm9vdC0+cmlnaHQsY3VycixhbnMpOwoJfQoJY3Vyci5wb3BfYmFjaygpOwp9CnZlY3Rvcjx2ZWN0b3I8aW50Pj5wcmludChUcmVlTm9kZSogcm9vdCl7Cgl2ZWN0b3I8dmVjdG9yPGludD4+YW5zOwoJaWYoIXJvb3QpcmV0dXJuIGFuczsKCQoJdmVjdG9yPGludD5jdXJyOwoJaGVscGVyKHJvb3QsY3VycixhbnMpOwoJcmV0dXJuIGFuczsKfQpUcmVlTm9kZSogYnVpbGRUcmVlKCl7CglpbnQgeDtjaW4+Png7CglpZih4ID09IC0xKXJldHVybiBudWxscHRyOwoJCglUcmVlTm9kZSogcm9vdCA9IG5ldyBUcmVlTm9kZSh4KTsKCQoJcXVldWU8VHJlZU5vZGUqPnE7CglxLnB1c2gocm9vdCk7CgkKCXdoaWxlKCFxLmVtcHR5KCkpewoJCWF1dG8gdT0gcS5mcm9udCgpO3EucG9wKCk7CgkJCgkJaWYoY2luPj54ICYmIHghPS0xKXsKCQkJdS0+bGVmdCA9IG5ldyBUcmVlTm9kZSh4KTsKCQkJcS5wdXNoKHUtPmxlZnQpOwoJCX0KCQkKCQlpZihjaW4+PnggJiYgeCE9LTEpewoJCQl1LT5yaWdodCA9IG5ldyBUcmVlTm9kZSh4KTsKCQkJcS5wdXNoKHUtPnJpZ2h0KTsKCQl9Cgl9CglyZXR1cm4gcm9vdDsKfQppbnQgbWFpbigpIHsKCVRyZWVOb2RlKiByb290ID0gYnVpbGRUcmVlKCk7Cgl2ZWN0b3I8dmVjdG9yPGludD4+YW5zID0gcHJpbnQocm9vdCk7CgkKCWZvcihhdXRvIHggOiBhbnMpewoJCWZvcihpbnQgeSA6IHgpewoJCQljb3V0PDx5PDwgIiAiOwoJCX0KCQljb3V0PDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=