/* package whatever; // don't place package name! */
import java.util.*;
public class Main{
static class Node{
Node right;
Node left;
int data;
Node(int data){
this.data = data;
}
}
static Node BuildTree(int[]vals){
if(vals.length == 0 || vals[0] == -1) return null;
Node root = new Node(vals[0]);
Queue<Node> q = new LinkedList<>();
q.offer(root);
int i = 1;
while(!q.isEmpty() && i<vals.length){
Node curr = q.poll();
if(i<vals.length && vals[i]!= -1){
curr.left =new Node(vals[i]);
q.offer(curr.left);
}i++;
if(i<vals.length && vals[i]!= -1){
curr.right =new Node(vals[i]);
q.offer(curr.right);
}i++;
}
return root;
}
static int height(Node root){
if(root == null) return -1;
int left = height(root.left);
int right = height(root.right);
return 1 + Math.
max(left,right
); }
public static void main
(String[]args
){ Scanner sc
= new Scanner
(System.
in); int n = sc.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++){
arr[i] = sc.nextInt();
}
Node root = BuildTree(arr);
System.
out.
println(height
(root
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwpwdWJsaWMgY2xhc3MgTWFpbnsKCXN0YXRpYyBjbGFzcyBOb2RlewoJCU5vZGUgcmlnaHQ7CgkJTm9kZSBsZWZ0OwoJCWludCBkYXRhOwoJCU5vZGUoaW50IGRhdGEpewoJCQl0aGlzLmRhdGEgPSBkYXRhOwoJCX0KCX0KCXN0YXRpYyBOb2RlIEJ1aWxkVHJlZShpbnRbXXZhbHMpewoJCWlmKHZhbHMubGVuZ3RoID09IDAgfHwgdmFsc1swXSA9PSAtMSkgcmV0dXJuIG51bGw7CgkJTm9kZSByb290ID0gbmV3IE5vZGUodmFsc1swXSk7CgkJUXVldWU8Tm9kZT4gcSA9IG5ldyBMaW5rZWRMaXN0PD4oKTsKCQlxLm9mZmVyKHJvb3QpOwoJCWludCBpID0gMTsKCQl3aGlsZSghcS5pc0VtcHR5KCkgJiYgaTx2YWxzLmxlbmd0aCl7CgkJCU5vZGUgY3VyciA9IHEucG9sbCgpOwoJCQlpZihpPHZhbHMubGVuZ3RoICYmIHZhbHNbaV0hPSAtMSl7CgkJCQljdXJyLmxlZnQgPW5ldyBOb2RlKHZhbHNbaV0pOwoJCQkJcS5vZmZlcihjdXJyLmxlZnQpOwoJCQl9aSsrOwoJCQlpZihpPHZhbHMubGVuZ3RoICYmIHZhbHNbaV0hPSAtMSl7CgkJCQljdXJyLnJpZ2h0ID1uZXcgTm9kZSh2YWxzW2ldKTsKCQkJCXEub2ZmZXIoY3Vyci5yaWdodCk7CgkJCX1pKys7CgkJfQoJCXJldHVybiByb290OwoJfQoJc3RhdGljIGludCBoZWlnaHQoTm9kZSByb290KXsKCQlpZihyb290ID09IG51bGwpIHJldHVybiAtMTsKCQlpbnQgbGVmdCA9IGhlaWdodChyb290LmxlZnQpOwoJCWludCByaWdodCA9IGhlaWdodChyb290LnJpZ2h0KTsKCQkKCQlyZXR1cm4gMSArIE1hdGgubWF4KGxlZnQscmlnaHQpOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW11hcmdzKXsKCQlTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQlpbnQgbiA9IHNjLm5leHRJbnQoKTsKCQlpbnRbXSBhcnIgPSBuZXcgaW50W25dOwoJCWZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkJCWFycltpXSA9IHNjLm5leHRJbnQoKTsKCQl9CgkJTm9kZSByb290ID0gQnVpbGRUcmVlKGFycik7CgkJCgkJU3lzdGVtLm91dC5wcmludGxuKGhlaWdodChyb290KSk7Cgl9Cn0=