# 重み付き木の直径を求める N = int(input()) edges = [[] for _ in range(N)] for _ in range(N - 1): a, b, c = map(int, input().split()) edges[a - 1].append((b - 1, c)) edges[b - 1].append((a - 1, c)) def dfs(start, edges): dist = [-1] * len(edges) dist[start] = 0 stack = [start] max_dist = 0 max_node = start while stack: node = stack.pop() for neighbor, weight in edges[node]: if dist[neighbor] == -1: dist[neighbor] = dist[node] + weight stack.append(neighbor) if dist[neighbor] > max_dist: max_dist = dist[neighbor] max_node = neighbor return max_node, max_dist farthest_node, _ = dfs(0, edges) _, diameter = dfs(farthest_node, edges) print(diameter)