#include <bits/stdc++.h>
using namespace std;
#define INFTY (1<<30)
#define MAX 100005

int n;
vector<int> d(MAX);
vector<vector<pair<int,int>>> G(MAX,vector<pair<int,int>>(0));


void bfs(int s){
    for(int i=0;i<n;i++){
        d[i]=INFTY;
    }
    queue<int> Q;
    Q.push(s);
    d[s]=0;
    while(!Q.empty()){
        int u=Q.front();
        Q.pop();
        for(int i=0;i<G[u].size();i++){
            auto v=G[u][i];
            if(d[v.first]==INFTY){
                d[v.first]=d[u]+v.second;
                Q.push(v.first);
            }
        }
    }
}

void solve(){
    bfs(0);
    int t,M=0;
    for(int i=0;i<n;i++){
        if(d[i]!=INFTY&&M<d[i]){
            M=d[i];
            t=i;
        }
    }

    bfs(t);
    M=0;
    for(int i=0;i<n;i++){
        if(d[i]!=INFTY&&M<d[i]){
            M=d[i];
        }
    }
    cout<<M<<endl;
}

int main(){
    int a,b,c;
    cin>>n;
    for(int i=0;i<n-1;i++){
        cin>>a>>b>>c;
        G[a].push_back(make_pair(b,c));
        G[b].push_back(make_pair(a,c));
    }

    solve();
}
