#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
int val;
TreeNode*left;
TreeNode*right;
TreeNode(int val):left(nullptr),right(nullptr),val(val){};
};
int dfs(TreeNode* root){
if(root == nullptr)return 0;
int left = dfs(root->left);
if(left == -1)return -1;
int right = dfs(root->right);
if(right == -1)return -1;
if(abs(left-right)>1)return -1;
return 1+max(left,right);
}
bool balanced(TreeNode* root){
return dfs(root)!=-1;
}
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();
cout << (balanced(root) ? "true" : "false") << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBUcmVlTm9kZXsKCWludCB2YWw7CglUcmVlTm9kZSpsZWZ0OwoJVHJlZU5vZGUqcmlnaHQ7CglUcmVlTm9kZShpbnQgdmFsKTpsZWZ0KG51bGxwdHIpLHJpZ2h0KG51bGxwdHIpLHZhbCh2YWwpe307Cn07CmludCBkZnMoVHJlZU5vZGUqIHJvb3QpewoJaWYocm9vdCA9PSBudWxscHRyKXJldHVybiAwOwoJaW50IGxlZnQgPSBkZnMocm9vdC0+bGVmdCk7CglpZihsZWZ0ID09IC0xKXJldHVybiAtMTsKCWludCByaWdodCA9IGRmcyhyb290LT5yaWdodCk7CglpZihyaWdodCA9PSAtMSlyZXR1cm4gLTE7CglpZihhYnMobGVmdC1yaWdodCk+MSlyZXR1cm4gLTE7CglyZXR1cm4gMSttYXgobGVmdCxyaWdodCk7Cn0KYm9vbCBiYWxhbmNlZChUcmVlTm9kZSogcm9vdCl7CglyZXR1cm4gZGZzKHJvb3QpIT0tMTsKfQoKVHJlZU5vZGUqIGJ1aWxkVHJlZSgpewoJaW50IHg7Y2luPj54OwoJaWYoeD09LTEpcmV0dXJuIG51bGxwdHI7CglUcmVlTm9kZSogcm9vdCA9IG5ldyBUcmVlTm9kZSh4KTsKCXF1ZXVlPFRyZWVOb2RlKj5xOwoJcS5wdXNoKHJvb3QpOwoJCgl3aGlsZSghcS5lbXB0eSgpKXsKCQlhdXRvIHUgPSBxLmZyb250KCk7CgkJcS5wb3AoKTsKCQkKCQlpZihjaW4+PnggJiYgeCE9LTEpewoJCQl1LT5sZWZ0ID0gbmV3IFRyZWVOb2RlKHgpOwoJCQlxLnB1c2godS0+bGVmdCk7CgkJfQoJCQoJCWlmKGNpbj4+eCAmJiB4IT0tMSl7CgkJCXUtPnJpZ2h0ID0gbmV3IFRyZWVOb2RlKHgpOwoJCQlxLnB1c2godS0+cmlnaHQpOwoJCX0KCX0KCXJldHVybiByb290Owp9CmludCBtYWluKCkgewogICAgVHJlZU5vZGUqcm9vdCA9IGJ1aWxkVHJlZSgpOwogIGNvdXQgPDwgKGJhbGFuY2VkKHJvb3QpID8gInRydWUiIDogImZhbHNlIikgPDwgIlxuIjsKCXJldHVybiAwOwp9