#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<int,int> P;
#define F first
#define S second
int n,ans;
vector<P>g[100005];
int d1[100005],d2[100005];
void dfs(int v,int p){
    for(int i=0;i<g[v].size();i++){
        int u=g[v][i].F,c=g[v][i].S;
        if(u!=p){
            dfs(u,v);
            int d=d1[u]+c;
            if(d1[v]<d)swap(d1[v],d);
            d2[v]=max(d2[v],d);
        }
    }
}
void dfs2(int v,int p){
    ans=max(ans,d1[v]+d2[v]);
    for(int i=0;i<g[v].size();i++){
        int u=g[v][i].F,c=g[v][i].S;
        if(u!=p){
            int d=d1[v];
            if(d1[u]+c==d)d=d2[v];
            if(d1[u]<d)swap(d1[u],d);
            d2[u]=max(d2[u],d);
            dfs2(u,v);
        }
    }
}
int main(void){
    cin>>n;
    for(int i=0;i<n-1;i++){
        int a,b,w;
        cin>>a>>b>>w;
        g[a].push_back(P(b,w));
        g[b].push_back(P(a,w));
    }
    dfs(0,-1);
    dfs2(0,-1);
    cout<<ans<<endl;
}

