import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;
public Edge(int num, int dist) {
static StringTokenizer st;
static List<Edge> tree[];
static Edge farthestNode;
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int DATA_SIZE = Integer.parseInt(br.readLine());
visited = new int[DATA_SIZE + 1];
tree = new ArrayList[DATA_SIZE + 1];
for (int i = 0; i < tree.length; i++) {
tree[i] = new ArrayList<Edge>();
String[] infoList = new String[DATA_SIZE];
for (int i = 0; i < DATA_SIZE - 1; i++) {
infoList[i]=br. readLine();
int parent, index, child, dist;
for (int i = 0; i < DATA_SIZE - 1; i++) {
info = infoList[i].trim().split(" ");
parent = Integer.parseInt(info[0]);
while (index < info.length - 1 ) {
child = Integer.parseInt(info[index++]);
dist = Integer.parseInt(info[index++]);
tree[parent].add(new Edge(child, dist));
tree[child].add(new Edge(parent, dist));
System.out.println(String.valueOf(maxDist));
private static void dfs(int curIndex, int dist) {
for (Edge aNode : tree[curIndex]) {
if (visited[aNode.num] != 1) {
dfs(aNode.num, dist + aNode.dist);