#include int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; std::cin >> n; std::vector>> G(n); for (int i = 1; i < n; i++) { int u, v, w; std::cin >> u >> v >> w; u--, v--; G[u].emplace_back(v, w); G[v].emplace_back(u, w); } long long ans = 0; auto dfs = [&](auto self, int v, int pre) -> long long { std::pair res; for (auto [v2, c] : G[v]) { if (v2 != pre) { long long tmp = self(self, v2, v); if (tmp + c > res.second) { res.second = tmp + c; if (res.second > res.first) { std::swap(res.first, res.second); } } } } ans = std::max(ans, res.first + res.second); return res.first; }; dfs(dfs, 0, -1); std::cout << ans << '\n'; }