#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
int left;
int right;
}T[100010];
int dfs(int k){
if(T[k].left==0 || T[k].right==0){
return 2;
}else{
return max(dfs(k*2)+1,dfs(k*2+1)+1);
}
}
int main(){
int root = 1;
cin>>n;
for(int i=1;i<=n;i++){
cin>>T[i].left>>T[i].right;
}
cout<<dfs(root);
return 0;
}