#include<iostream>
#include<queue>
using namespace std;
long long spravnik [20000];
int main ()
{
    struct spravnik_na_topki{
        queue<long long>q;
    };
    queue<long long>random_q;
    spravnik_na_topki Q[20000];
    Q[0].q.front()=0;
    long long N;
    long long teglo=0;
    cin>>N;
    spravnik[0]=0;
    for (long long i=0; i<N; i++){
        long long a, b;
        cin>>a>>b;
        if (b>0){
            teglo=teglo+b+spravnik [a-1];
            spravnik[i]=b+spravnik [a-1];
            Q[i].q.front()=b;
        }
        if (b=0){
            teglo=teglo+spravnik [a]-Q[a-1].q.front();
            spravnik [i]=spravnik [a]-Q[a-1].q.front();
            random_q=Q[a-1].q;
            random_q.pop();
            Q[i].q.front()=random_q.front();
        }
    }
    cout<<teglo;
    return 0;
}
