import sys input = sys.stdin.readline def main(): N = int(input()) adj = [[] for _ in range(N)] for _ in range(N - 1): u, v, w = map(int, input().split()) u -= 1; v -= 1 adj[u].append((v, w)) adj[v].append((u, w)) parent = [-1] * N order = [] stack = [0] parent[0] = -2 # ルートの親を特別マーク while stack: u = stack.pop() order.append(u) for v, _ in adj[u]: if parent[v] == -1: parent[v] = u stack.append(v) down = [0] * N NEG_INF = float('-inf') ans = NEG_INF # 逆順に DP for u in reversed(order): best1 = NEG_INF best2 = NEG_INF for v, w in adj[u]: if parent[v] == u: dc = down[v] + w if dc >= best1: best2 = best1 best1 = dc elif dc > best2: best2 = dc if best1 != NEG_INF: down[u] = best1 ans = max(ans, best1) if best2 != NEG_INF: ans = max(ans, best1 + best2) print(ans) if __name__ == '__main__': main()