#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int val):val(val),left(nullptr),right(nullptr){};
};
int width(TreeNode* root){
if(root==nullptr)return 0;
queue<pair<TreeNode*,int>>q;
q.push({root,0});
int ans = 0;
while(!q.empty()){
int size = q.size();
int mmin = q.front().second;
int first = -1,last =-1;
for(int i = 0 ; i < size;i++){
auto node=q.front();
q.pop();
auto u = node.first;
int cur_id = node.second - mmin;
if(i == 0)first = cur_id;
if(i == size-1)last = cur_id;
//cout<<"first"<<first<<endl;
// cout<<"last"<<last<<endl;
if(u->left)q.push({u->left,2*cur_id+1});
if(u->right)q.push({u->right,2*cur_id +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)<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVHJlZU5vZGV7CglpbnQgdmFsOwoJVHJlZU5vZGUqIGxlZnQ7CglUcmVlTm9kZSogcmlnaHQ7CgkKCVRyZWVOb2RlKGludCB2YWwpOnZhbCh2YWwpLGxlZnQobnVsbHB0cikscmlnaHQobnVsbHB0cil7fTsKfTsKaW50IHdpZHRoKFRyZWVOb2RlKiByb290KXsKCWlmKHJvb3Q9PW51bGxwdHIpcmV0dXJuIDA7CglxdWV1ZTxwYWlyPFRyZWVOb2RlKixpbnQ+PnE7CglxLnB1c2goe3Jvb3QsMH0pOwppbnQgYW5zID0gMDsKCgoJd2hpbGUoIXEuZW1wdHkoKSl7CgkJaW50IHNpemUgPSBxLnNpemUoKTsKCQlpbnQgbW1pbiA9IHEuZnJvbnQoKS5zZWNvbmQ7CgkJaW50IGZpcnN0ID0gLTEsbGFzdCA9LTE7CgkJZm9yKGludCBpID0gMCA7IGkgPCBzaXplO2krKyl7CgkJCWF1dG8gbm9kZT1xLmZyb250KCk7CgkJcS5wb3AoKTsKCQlhdXRvIHUgPSBub2RlLmZpcnN0OwoJCQoJCWludCBjdXJfaWQgPSBub2RlLnNlY29uZCAtIG1taW47CgkJCWlmKGkgPT0gMClmaXJzdCA9IGN1cl9pZDsKCQkJaWYoaSA9PSBzaXplLTEpbGFzdCA9IGN1cl9pZDsKCQkJLy9jb3V0PDwiZmlyc3QiPDxmaXJzdDw8ZW5kbDsKCQkvLwljb3V0PDwibGFzdCI8PGxhc3Q8PGVuZGw7CgkJCWlmKHUtPmxlZnQpcS5wdXNoKHt1LT5sZWZ0LDIqY3VyX2lkKzF9KTsKCQkJaWYodS0+cmlnaHQpcS5wdXNoKHt1LT5yaWdodCwyKmN1cl9pZCArMn0pOwoJCX0KCQlhbnMgPSBtYXgoYW5zLGxhc3QtZmlyc3QrMSk7Cgl9CglyZXR1cm4gYW5zOwp9ClRyZWVOb2RlKiBidWlsZFRyZWUoKXsKCWludCB4O2Npbj4+eDsKCWlmKHg9PS0xKXJldHVybiBudWxscHRyOwoJVHJlZU5vZGUqIHJvb3QgPSBuZXcgVHJlZU5vZGUoeCk7CgkKCXF1ZXVlPFRyZWVOb2RlKj5xOwoJcS5wdXNoKHJvb3QpOwoJCgl3aGlsZSghcS5lbXB0eSgpKXsKCQlhdXRvIHUgPSBxLmZyb250KCk7cS5wb3AoKTsKCQlpZihjaW4+PnggJiYgeCAhPSAtMSl7CgkJCXUtPmxlZnQgPSBuZXcgVHJlZU5vZGUoeCk7CgkJCXEucHVzaCh1LT5sZWZ0KTsKCQl9CgkJCWlmKGNpbj4+eCAmJiB4ICE9IC0xKXsKCQkJdS0+cmlnaHQgPSBuZXcgVHJlZU5vZGUoeCk7CgkJCXEucHVzaCh1LT5yaWdodCk7CgkJfQoJCQoJfQoJcmV0dXJuIHJvb3Q7Cn0KaW50IG1haW4oKSB7CiAgICBUcmVlTm9kZSogcm9vdCA9IGJ1aWxkVHJlZSgpOwogICAgY291dDw8d2lkdGgocm9vdCk8PGVuZGw7CglyZXR1cm4gMDsKfQ==