#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
inline long long modMul(long long a, long long b) {
  return ((a % mod) * (b % mod)) % mod;
}
inline long long modAdd(long long a, long long b) {
  return ((a % mod) + (b % mod)) % mod;
}
inline long long modPow(long long b, long long p) {
  long long r = 1;
  while (p) {
    if (p & 1) r = modMul(r, b);
    b = modMul(b, b);
    p >>= 1;
  }
  return r;
}
inline long long modInverse(long long a) { return modPow(a, mod - 2); }
inline long long modDiv(long long a, long long b) {
  return modMul(a, modInverse(b));
}
long long const maxn = 5 * 1000000 + 5;
bool comp(long long a, long long b) { return a > b; };
long long mat[150][150];
long long deg[150];
long long n;
long long ans;
void initialise() {
  for (long long i = 0; i < 150; i++) {
    for (long long j = 0; j < 150; j++) {
      if (i == j) {
        mat[i][j] = 0;
      } else {
        mat[i][j] = 1e18;
      }
    }
  }
}
void solve() {
  cin >> n;
  initialise();
  for (long long i = 0; i < n - 1; i++) {
    long long s;
    cin >> s;
    long long d;
    cin >> d;
    long long c;
    cin >> c;
    mat[s][d] = c;
    mat[d][s] = c;
    deg[s]++;
    deg[d]++;
  }
  for (long long k = 0; k < n; k++) {
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < n; j++) {
        mat[i][j] = min(mat[i][j], mat[i][k] + mat[k][j]);
      }
    }
  }
  vector<long long> v;
  for (long long i = 0; i < n; i++) {
    if (deg[i] == 1) {
      v.push_back(mat[0][i]);
    }
  }
  sort(v.begin(), v.end());
  long long x = v.size();
  cout << v[x - 1] << endl;
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  long long test = 1;
  while (test--) {
    solve();
  }
  return 0;
}
