#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int val):val(val),left(nullptr),right(nullptr){};
};
ll width(TreeNode* root){
if(!root)return 0;
queue<pair<TreeNode*,ll>>q;
ll ans = 0;
q.push({root,0});
while(!q.empty()){
auto sz = q.size();
ll mmin = q.front().second;
ll first = 0; ll last =0;
for(int i = 0 ; i < sz;i++){
auto u =q.front().first;
auto d= q.front().second;
q.pop();
ll curr = d - mmin;
if(i == 0)first = curr;
if(i == sz-1)last = curr;
if(u->left)q.push({u->left,2*curr+1});
if(u->right)q.push({u->right,2*curr+2});
}
ans = max(ans,last-first+1);
}
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();
cout<<width(root);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCnN0cnVjdCBUcmVlTm9kZXsKCWludCB2YWw7CglUcmVlTm9kZSogbGVmdDsKCVRyZWVOb2RlKiByaWdodDsKCQoJVHJlZU5vZGUoaW50IHZhbCk6dmFsKHZhbCksbGVmdChudWxscHRyKSxyaWdodChudWxscHRyKXt9Owp9OwoKbGwgd2lkdGgoVHJlZU5vZGUqIHJvb3QpewogIGlmKCFyb290KXJldHVybiAwOwogIAogIHF1ZXVlPHBhaXI8VHJlZU5vZGUqLGxsPj5xOwogIAogIGxsIGFucyA9IDA7CiAgcS5wdXNoKHtyb290LDB9KTsKICAKICB3aGlsZSghcS5lbXB0eSgpKXsKICAJYXV0byBzeiA9IHEuc2l6ZSgpOwogIAlsbCBtbWluID0gcS5mcm9udCgpLnNlY29uZDsKICAJbGwgZmlyc3QgPSAwOyBsbCBsYXN0ID0wOwogIAlmb3IoaW50IGkgPSAwIDsgaSA8IHN6O2krKyl7CiAgCQlhdXRvIHUgPXEuZnJvbnQoKS5maXJzdDsKICAJCWF1dG8gZD0gcS5mcm9udCgpLnNlY29uZDsKICAJCXEucG9wKCk7CiAgCQlsbCBjdXJyID0gZCAtIG1taW47CiAgCQlpZihpID09IDApZmlyc3QgPSBjdXJyOwogIAkJaWYoaSA9PSBzei0xKWxhc3QgPSBjdXJyOwogIAkJCiAgCQlpZih1LT5sZWZ0KXEucHVzaCh7dS0+bGVmdCwyKmN1cnIrMX0pOwogIAkJaWYodS0+cmlnaHQpcS5wdXNoKHt1LT5yaWdodCwyKmN1cnIrMn0pOwogIAkJCiAgCQkKICAJfQogIAlhbnMgPSBtYXgoYW5zLGxhc3QtZmlyc3QrMSk7CiAgfQogIHJldHVybiBhbnM7Cn0KVHJlZU5vZGUqIGJ1aWxkVHJlZSgpewoJaW50IHg7IGNpbj4+eDsKCWlmKHggPT0gLTEpcmV0dXJuIG51bGxwdHI7OwoJCglUcmVlTm9kZSogcm9vdCA9IG5ldyBUcmVlTm9kZSh4KTsKCXF1ZXVlPFRyZWVOb2RlKj5xOwoJcS5wdXNoKHJvb3QpOwoJCgl3aGlsZSghcS5lbXB0eSgpKXsKCQlhdXRvIHUgPSBxLmZyb250KCk7CgkJcS5wb3AoKTsKCQkKCQlpZihjaW4+PnggJiYgeCE9LTEpewoJCQl1LT5sZWZ0ID0gbmV3IFRyZWVOb2RlKHgpOwoJCQlxLnB1c2godS0+bGVmdCk7CgkJfQoJCQoJCQlpZihjaW4+PnggJiYgeCE9LTEpewoJCQl1LT5yaWdodCA9IG5ldyBUcmVlTm9kZSh4KTsKCQkJcS5wdXNoKHUtPnJpZ2h0KTsKCQl9Cgl9CglyZXR1cm4gcm9vdDsKfQppbnQgbWFpbigpIHsKVHJlZU5vZGUqIHJvb3QgPSBidWlsZFRyZWUoKTsKY291dDw8d2lkdGgocm9vdCk7CglyZXR1cm4gMDsKfQ==