#include #include using int64 = long long; template class Edge { public: int to; T weight; Edge(int to, T weight) : to{to}, weight{weight} {} }; using Graph = std::vector>>; int64 ans = 0; int64 dfs(int v, int par, const Graph& g) { int64 max1 = 0, max2 = 0; for (auto& e : g[v]) { if (e.to == par) continue; int64 val = dfs(e.to, v, g) + e.weight; if (val > max1) { max2 = max1; max1 = val; } else if (val > max2) { max2 = val; } } ans = std::max(ans, max1 + max2); ans = std::max(ans, max1); return std::max(0, max1); } int main() { int N; std::cin >> N; Graph g(N); int64 u, v, w; for (int i = 0; i < N - 1; i++) { std::cin >> u >> v >> w; u--; v--; g[u].emplace_back(v, w); g[v].emplace_back(u, w); } dfs(0, -1, g); std::cout << ans << std::endl; return 0; }