import sys
input = sys.stdin.readline
V = int(input())
graph = [[] for i in range(V+1)]
for _ in range(V):
line = list(map(int, input().split()))
for i in range(1, len(line)//2):
graph[line[0]].append([line[2*i-1], line[2*i]])
result = [0 for _ in range(V+1)]
def dfs(start, graph, result):
for i, k in graph[start]:
if result[i] == 0:
result[i] = result[start] + k
dfs(i, graph, result)
dfs(1, graph, result)
result[1] = 0
max_num = 0
index = 0
for i in range(len(result)):
if max_num < result[i]:
max_num = result[i]
index = i
answer = [0 for _ in range(V+1)]
dfs(index, graph, answer)
answer[index] = 0
print(max(answer))