#include <iostream>
#include <sstream>
#include <string>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int val) : val(val), left(nullptr), right(nullptr) {}
};
bool isSame(TreeNode* p, TreeNode* q) {
if (p == nullptr && q == nullptr) return true;
if (p == nullptr || q == nullptr) return false;
if (p->val != q->val) return false;
return isSame(p->left, q->left) && isSame(p->right, q->right);
}
TreeNode* buildTree() {
string line;
// Read lines, skipping accidental empty lines
while (getline(cin, line)) {
// Strip trailing carriage return if present
if (!line.empty() && line.back() == '\r') {
line.pop_back();
}
if (!line.empty()) break;
}
if (line.empty()) return nullptr;
stringstream ss(line);
int x;
if (!(ss >> x) || 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 (ss >> x && x != -1) {
u->left = new TreeNode(x);
q.push(u->left);
}
if (ss >> x && x != -1) {
u->right = new TreeNode(x);
q.push(u->right);
}
}
return root;
}
int main() {
TreeNode* p = buildTree();
TreeNode* q = buildTree();
cout << (isSame(p, q) ? "true" : "false") << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHF1ZXVlPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBUcmVlTm9kZSB7CiAgICBpbnQgdmFsOwogICAgVHJlZU5vZGUqIGxlZnQ7CiAgICBUcmVlTm9kZSogcmlnaHQ7CiAgICBUcmVlTm9kZShpbnQgdmFsKSA6IHZhbCh2YWwpLCBsZWZ0KG51bGxwdHIpLCByaWdodChudWxscHRyKSB7fQp9OwoKYm9vbCBpc1NhbWUoVHJlZU5vZGUqIHAsIFRyZWVOb2RlKiBxKSB7CiAgICBpZiAocCA9PSBudWxscHRyICYmIHEgPT0gbnVsbHB0cikgcmV0dXJuIHRydWU7CiAgICBpZiAocCA9PSBudWxscHRyIHx8IHEgPT0gbnVsbHB0cikgcmV0dXJuIGZhbHNlOwogICAgaWYgKHAtPnZhbCAhPSBxLT52YWwpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiBpc1NhbWUocC0+bGVmdCwgcS0+bGVmdCkgJiYgaXNTYW1lKHAtPnJpZ2h0LCBxLT5yaWdodCk7Cn0KClRyZWVOb2RlKiBidWlsZFRyZWUoKSB7CiAgICBzdHJpbmcgbGluZTsKICAgIC8vIFJlYWQgbGluZXMsIHNraXBwaW5nIGFjY2lkZW50YWwgZW1wdHkgbGluZXMKICAgIHdoaWxlIChnZXRsaW5lKGNpbiwgbGluZSkpIHsKICAgICAgICAvLyBTdHJpcCB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gaWYgcHJlc2VudAogICAgICAgIGlmICghbGluZS5lbXB0eSgpICYmIGxpbmUuYmFjaygpID09ICdccicpIHsKICAgICAgICAgICAgbGluZS5wb3BfYmFjaygpOwogICAgICAgIH0KICAgICAgICBpZiAoIWxpbmUuZW1wdHkoKSkgYnJlYWs7CiAgICB9CiAgICBpZiAobGluZS5lbXB0eSgpKSByZXR1cm4gbnVsbHB0cjsKCiAgICBzdHJpbmdzdHJlYW0gc3MobGluZSk7CiAgICBpbnQgeDsKICAgIGlmICghKHNzID4+IHgpIHx8IHggPT0gLTEpIHJldHVybiBudWxscHRyOwoKICAgIFRyZWVOb2RlKiByb290ID0gbmV3IFRyZWVOb2RlKHgpOwogICAgcXVldWU8VHJlZU5vZGUqPiBxOwogICAgcS5wdXNoKHJvb3QpOwoKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgYXV0byB1ID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CgogICAgICAgIGlmIChzcyA+PiB4ICYmIHggIT0gLTEpIHsKICAgICAgICAgICAgdS0+bGVmdCA9IG5ldyBUcmVlTm9kZSh4KTsKICAgICAgICAgICAgcS5wdXNoKHUtPmxlZnQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNzID4+IHggJiYgeCAhPSAtMSkgewogICAgICAgICAgICB1LT5yaWdodCA9IG5ldyBUcmVlTm9kZSh4KTsKICAgICAgICAgICAgcS5wdXNoKHUtPnJpZ2h0KTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcm9vdDsKfQoKaW50IG1haW4oKSB7CiAgICBUcmVlTm9kZSogcCA9IGJ1aWxkVHJlZSgpOwogICAgVHJlZU5vZGUqIHEgPSBidWlsZFRyZWUoKTsKICAgIGNvdXQgPDwgKGlzU2FtZShwLCBxKSA/ICJ0cnVlIiA6ICJmYWxzZSIpIDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQ==