#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
int val;
TreeNode*right;
TreeNode*left;
TreeNode(int val):left(nullptr),right(nullptr),val(val){};
};
int height(TreeNode* root){
if(root == nullptr)return 0;
return 1+ max(height(root->right),height(root->left));
}
int diameter(TreeNode*root){
if(root == nullptr)return 0;
int l = height(root->left);
int r = height(root->right);
int ld = diameter(root->left);
int rd = diameter(root->right);
return max(l+r,max(ld,rd));
}
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<<diameter(root);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBUcmVlTm9kZXsKCWludCB2YWw7CglUcmVlTm9kZSpyaWdodDsKCVRyZWVOb2RlKmxlZnQ7CglUcmVlTm9kZShpbnQgdmFsKTpsZWZ0KG51bGxwdHIpLHJpZ2h0KG51bGxwdHIpLHZhbCh2YWwpe307Cn07CmludCBoZWlnaHQoVHJlZU5vZGUqIHJvb3QpewoJaWYocm9vdCA9PSBudWxscHRyKXJldHVybiAwOwoJcmV0dXJuIDErIG1heChoZWlnaHQocm9vdC0+cmlnaHQpLGhlaWdodChyb290LT5sZWZ0KSk7Cn0KaW50IGRpYW1ldGVyKFRyZWVOb2RlKnJvb3QpewoJaWYocm9vdCA9PSBudWxscHRyKXJldHVybiAwOwoJCglpbnQgbCA9IGhlaWdodChyb290LT5sZWZ0KTsKCWludCByID0gaGVpZ2h0KHJvb3QtPnJpZ2h0KTsKCQoJaW50IGxkID0gZGlhbWV0ZXIocm9vdC0+bGVmdCk7CglpbnQgcmQgPSBkaWFtZXRlcihyb290LT5yaWdodCk7CgkKCXJldHVybiBtYXgobCtyLG1heChsZCxyZCkpOwp9ClRyZWVOb2RlKiBidWlsZFRyZWUoKXsKCWludCB4O2Npbj4+eDsKCWlmKHg9PS0xKXJldHVybiBudWxscHRyOwoJVHJlZU5vZGUqIHJvb3QgPSBuZXcgVHJlZU5vZGUoeCk7CgkKCXF1ZXVlPFRyZWVOb2RlKj5xOwoJcS5wdXNoKHJvb3QpOwoJCgl3aGlsZSghcS5lbXB0eSgpKXsKCQlhdXRvIHUgPSBxLmZyb250KCk7CgkJcS5wb3AoKTsKCQkKCQlpZihjaW4+PnggJiYgeCE9LTEpewoJCQl1LT5sZWZ0ID0gbmV3IFRyZWVOb2RlKHgpOwoJCQlxLnB1c2godS0+bGVmdCk7CgkJfQoJCQlpZihjaW4+PnggJiYgeCE9LTEpewoJCQl1LT5yaWdodCA9IG5ldyBUcmVlTm9kZSh4KTsKCQkJcS5wdXNoKHUtPnJpZ2h0KTsKCQl9Cgl9CglyZXR1cm4gcm9vdDsKfQppbnQgbWFpbigpIHsKICAgIFRyZWVOb2RlKiByb290ID0gYnVpbGRUcmVlKCk7CiAgICBjb3V0PDxkaWFtZXRlcihyb290KTsKCXJldHVybiAwOwp9