#include<iostream>
#include<vector>
using namespace std;
static const int MAX = 100000;
static const int INF = 1 << 30;
int n, cost[MAX], maxCostIndex;
vector<pair<int, int> > V[MAX];
bool vis[MAX];

void dfs(int u){
  vis[u] = true;
  for ( int i = 0; i < V[u].size(); i++) {
    pair<int, int> s = V[u][i];
    if ( !vis[s.first] ){
      cost[s.first] = cost[u] + s.second;
      if ( cost[s.first] > cost[maxCostIndex]){
        maxCostIndex = s.first;
       }
      dfs(s.first);
    }
  }
}

int getLongest(int s){
  for ( int i = 0; i < n; i++){
    vis[i] = false;
    cost[i] = INF;
  }
  cost[s] = 0;
  maxCostIndex = s;
  dfs(s);
  return maxCostIndex;
}

void diameter(){
  int x = getLongest(0);
  int y = getLongest(x);
  cout << cost[y] << endl;
}

int main(){
  cin >> n;
  int s, t, w;
  for ( int i = 0; i < n-1; i++) {
    cin >> s >> t >> w;
    V[s].push_back(make_pair(t, w));
    V[t].push_back(make_pair(s, w));
  }

  diameter();

  return 0;
}
