#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int v[1000002];
int l[1000002];
int r[1000002];
int ans=0;
bool chk(int x,int y){
if(x==-1 and y==-1){
return true;
}
if(x==-1 or y==-1){
return false;
}
if(v[x]!=v[y]){
return false;
}
return chk(l[x],r[y])and(r[x],l[y]);
}
int dx(int x){
if(x==-1){
return 0;
}
return dx(l[x])+dx(r[x])+1;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
cin>>l[i]>>r[i];
}
for(int i=1;i<=n;i++){
if(chk(i,i)){
ans=max(ans,dx(i));
}
}
cout<<ans;
return 0;
}