#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;

struct At{int u,v,w,next;}e[300004];

int g[100004],d[100004];
int n,m,tot=0;
bool vis[100004];

void input(){
	cin>>n;
	for(int i=1;i<n;i++){
		int u,v,w;
		cin>>u>>v>>w;
		e[++tot]=(At){u,v,w,g[u]};
		g[u]=tot;
		e[++tot]=(At){v,u,w,g[v]};
		g[v]=tot;
	}
}

int spfa(int st){
	queue<int>q;
	memset(d,127,sizeof(d));
	memset(vis,0,sizeof(vis));
	d[st]=0;
	q.push(st);
	vis[st]=1;
	while(!q.empty()){
		int x=q.front();
		q.pop();
		vis[x]=0;
		for(int i=g[x];i>0;i=e[i].next){
			int y=e[i].v,w=e[i].w;
			if(d[y]>d[x]+w){
				d[y]=d[x]+w;
				if(!vis[y]){
					vis[y]=1;
					q.push(y);
				}
			}
		}
	}
	int re=0,ba=st;
	for(int i=0;i<n;i++){
		if(d[i]>re){
			re=d[i];
			ba=i;
		}
	}
	return ba;
}

int main(){
	input();
	int ed1=spfa(0);
	int ed2=spfa(ed1);
	cout<<d[ed2]<<endl;
	return 0;
} 