#include<bits/stdc++.h>
using namespace std;
long long n,x,y,ss,b[1005];
struct abc{
long long f,s[1005],p=0,s1=0;
}a[1005];
long long dfs(long long x){
b[x]=1;
long long as=0;
if(b[a[x].f]==0){
long long ppp=0;
for(int i=1;i<=a[a[x].f].s1;i++){
if(b[i]==0){
ppp++;
}
}
if(b[a[a[x].f].f]==0){
ppp++;
}
as=max(as,dfs(a[x].f)+ppp-a[x].f);
}
for(int i=1;i<=a[x].s1;i++){
if(b[a[x].s[i]]==0){
long long ppp=0;
for(int j=1;j<=a[a[x].s[i]].s1;j++){
if(b[j]==0){
ppp++;
}
}
ppp++;
long long ass=dfs(a[x].s[i])+ppp-a[a[i].s[i]].f;
as=max(as,ass);
}
}
b[x]=0;
return as;
}
int main(){
freopen("delete.in","r",stdin);
freopen("delete.out","w",stdout);
scanf("%lld",&n);
for(int i=2;i<=n;i++){
scanf("%lld%lld",&x,&y);
a[i].f=x;
a[i].p=y;
a[x].s[++a[x].s1]=i;
}
ss=0;
for(int i=1;i<=n;i++){
long long sss=dfs(i);
ss=max(ss,sss);
}
cout<<ss;
return 0;
}//0 1 0 0 1 1