#include <bits/stdc++.h>
#define pb push_back
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=100005;

struct edge{int to,cost;};

int n,ro;
int temp,ans;
vector<edge>G[maxn];

void dfs(int u,int p,int w) {
	for (edge e:G[u])
		if (e.to!=p) dfs(e.to,u,w+e.cost);
	if (w>temp) {
		temp=w;
		ro=u;
	}
}

void dfs2(int u,int p,int w) {
	for (edge e:G[u])
		if (e.to!=p) dfs2(e.to,u,w+e.cost);
	ans=max(ans,w);
}

int main() {
	cin>>n;
	for (int i=0;i<n-1;i++) {
		int u,v,w; cin>>u>>v>>w;
		G[u].pb(edge{v,w});
		G[v].pb(edge{u,w});
	}
	dfs(0,-1,0);
	dfs2(ro,-1,0);
	cout<<ans<<'\n';
}
