# include <bits/stdc++.h>
using namespace std;
# define LL long long
const int p=1919810,mod1=998244353,mod2=998244353,N=1e6+5;
LL pw[N];int n;
int l[N],r[N],v[N],sz[N];
LL Hash[N][2],Hash2[N][2];
int ans;
void dfs(int a){
if(a==0) return ;
sz[a]=1;
dfs(l[a]);
dfs(r[a]);
sz[a]+=sz[l[a]]+sz[r[a]];
Hash[a][0]=((v[a]*pw[sz[l[a]]]+Hash[r[a]][0]*pw[sz[l[a]]+1])+Hash[l[a]][0])%mod1;
Hash[a][1]=((v[a]*pw[sz[r[a]]]+Hash[l[a]][1]*pw[sz[r[a]]+1])+Hash[r[a]][1])%mod1;
if(Hash[a][0]==Hash[a][1])
ans=max(ans,sz[a]);
return ;
}
int main(){
scanf("%d",&n);
for(int i=pw[0]=1;i<=n;i++) pw[i]=pw[i-1]*p%mod1;
for(int i=1;i<=n;i++) scanf("%d",&v[i]);
for(int i=1;i<=n;i++)
scanf("%d%d",&l[i],&r[i]),l[i]=max(l[i],0),r[i]=max(r[i],0);
dfs(1);
printf("%d",ans);
return 0;
}