#include<cstdlib>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include <algorithm>
#include<vector>
#include<set>
#define LL long long
#define inf 0x7fffffff
#define E 1e-9
#define M 100
#define N 10010
using namespace std;
int maxv,len[N][N],vis[N];
char str[100];
vector<int> g[N];
int dfs(int u)
{
vis[u]=1;
int s=g[u].size();
int one=0,twe=0;
for(int i=0; i<s; i++)
{
int v=g[u][i];
if(!vis[v])
{
int dep=len[u][v]+dfs(v);
if(dep>one)
{
twe=one;
one=dep;
}
else if(dep>twe)
twe=dep;
}
}
int d=one+twe;
if(maxv<d)
maxv=d;
return one;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("ex.in","r",stdin);
#endif
while(gets(str)!=NULL)
{
maxv=0;
int maxn=0;
memset(len,0,sizeof(len));
memset(vis,0,sizeof(vis));
int l,u,v;
while(strlen(str)>0)//输入可能不安题意!!无语
{
sscanf(str,"%d%d%d",&u,&v,&l);
if(u>maxn)
maxn=u;
if(v>maxn)
maxn=v;
g[u].push_back(v);
g[v].push_back(u);
len[u][v]=l;
len[v][u]=l;
if(gets(str)==NULL)
break;
}
dfs(u);
cout<<maxv<<endl;
for(int i=1; i<=maxn; i++)//优化!!
g[i].clear();
}
return 0;
}