#include <bits/stdc++.h>
#define fi first
#define endl '\n'
#define se second
#define int long long
#define getName(x) #x
#define vi std::vector<int>
#define isz(v) (int) v.size()
#define pii std::pair<int, int>
#define all(v) v.begin(), v.end()
#define loop cerr << "here" << endl;
#define breakLoop if(TIME > 1) break;
#define TIME 1.0 * clock() / CLOCKS_PER_SEC
using namespace std;
typedef long long ll;
const int MAXN = 1e6 + 7;

template <typename T> void maximize(T &a, T b){if(a < b) a = b;}
template <typename T> void minimize(T &a, T b){if(a > b) a = b;}
int ans, n, sz[MAXN];
vector<pii> a[MAXN];
vi save; deque <int> dq;

void dfs(int u, int p, int costPar){
    sz[u] = 1; bool cntOdd = 0;
    for(auto i : a[u]){int v = i.fi; if(v == p)continue; dfs(v, u, i.se); sz[u] += sz[v]; if(sz[v]&1) cntOdd = 1;}
    if((sz[u]&1) and cntOdd and sz[u] > 1){
        save.clear(), dq.clear();
        for(auto i : a[u]) if((sz[i.fi]&1) and i.fi != p) save.push_back(i.se); sort(all(save));
        for(auto i : save) dq.push_back(i);
        while(isz(dq)){
            maximize(ans, dq.back() + dq.front());
            dq.pop_back(), dq.pop_front();
        }
    }
    else if(sz[u] % 2 == 0){
        save.clear(), dq.clear(); save.push_back(costPar);
        for(auto i : a[u]) if((sz[i.fi]&1) and i.fi != p) save.push_back(i.se); sort(all(save));
        for(auto i : save) dq.push_back(i);
        while(isz(dq)){
            maximize(ans, dq.back() + dq.front());
            dq.pop_back(), dq.pop_front();
        }
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    #define task "t"
    if (fopen(task".inp", "r")){
        freopen(task".inp", "r", stdin);
        freopen(task".out", "w", stdout);
    }

    cin >> n;
    for(int i = 1; i <= n - 1; i++){
        int x, y, w;
        cin >> x >> y >> w;
        a[x].push_back({y, w});
        a[y].push_back({x, w});
    }
    for(int i = 1; i <= n; i++) sort(all(a[i]), [&] (pii x, pii y){return x.se < y.se;});
    dfs(1, -1, 0);
    cout << ans;

    cerr << endl << "-------Time elapsed-------" << endl;
    cerr << "          " << TIME << " s" << endl;
    cerr << "--------------------------" << endl;

}
