#include <iostream>
//#include <fstream>
using namespace std;

#define in cin
//ifstream in("3283.txt");

int main() {
    int n;
    while (in >> n && n > 0) {
        int padre[n], costo[n];
        int max1[n], max2[n];
        max1[0] = max2[0] = 0;
        for (int i = 1; i < n; i++) {
            in >> padre[i] >> costo[i];
            max1[i] = max2[i] = 0;
        }
        for (int i = n-1; i > 0; i--) {
            if (max1[padre[i]] < costo[i] + max1[i]) {
                max2[padre[i]] = max1[padre[i]];
                max1[padre[i]] = costo[i] + max1[i];
            } else if (max2[padre[i]] < costo[i] + max1[i])
                max2[padre[i]] = costo[i] + max1[i];
        }
        int max = 0;
        for (int i = 0; i < n; i++)
            if (max1[i] + max2[i] > max)
                max = max1[i] + max2[i];
        cout << max << endl;
    }

    return 0;
}

