#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define all(x) (x).begin(),(x).end()
const int mod=1000000007,MAX=100001,INF=1<<30;
vector<pair<int,int>> S[MAX];
int V,dis[MAX];

void DFS(int u){
    for(int i=0;i<S[u].size();i++){
        int a=S[u][i].first;
        if(dis[a]!=INF) continue;
        dis[a]=dis[u]+S[u][i].second;
        DFS(a);
    }
}


int main(){

    cin>>V;
    for(int i=0;i<V-1;i++){
        int a,b,c;cin>>a>>b>>c;
        S[a].push_back(make_pair(b,c));
        S[b].push_back(make_pair(a,c));
    }
    
    for(int i=0;i<V;i++){
        dis[i]=INF;
    }
    dis[0]=0;
    
    DFS(0);
    
    int point=0,maxi=0;
    
    for(int i=0;i<V;i++){
        if(dis[i]>maxi){
            maxi=dis[i];
            point=i;
        }
    }
    
    for(int i=0;i<V;i++){
        dis[i]=INF;
    }
    dis[point]=0;
    
    DFS(point);
    
    int ans=0;
    
    for(int i=0;i<V;i++){
        ans=max(ans,dis[i]);
    }
    
    cout<<ans<<endl;
    
    
    
}


