#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,h[10005],e[20005],w[20005],ne[20005],idx,d1[10005],d2[10005],p1[10005],up[10005];
bool il[10005];
void add(int a,int b,int c){e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;}
int dfsd(int u,int fa){
int i,j,d;
d1[u]=d2[u]=-0x3f3f3f3f;
for(i=h[u];i!=-1;i=ne[i]){
j=e[i];
if(j==fa)continue;
d=dfsd(j,u)+w[i];
if(d>=d1[u])d2[u]=d1[u],d1[u]=d,p1[u]=j;
else if(d>d2[u])d2[u]=d;
}
if (d1[u]==-0x3f3f3f3f)d1[u]=d2[u]=0,il[u]=true;
return d1[u];
}
void dfsu(int u, int fa)
{
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(j==fa)continue;
if(p1[u]==j)up[j]=max(up[u],d2[u])+w[i];
else up[j]=max(up[u],d1[u])+w[i];
dfsu(j,u);
}
}
int main()
{
int i,a,b,c,ans;
scanf("%d",&n);
memset(h,-1,sizeof h);
for(i=0;i<n-1;i++){
scanf("%d%d%d",&a,&b,&c);
add(a,b,c),add(b,a,c);
}
dfsd(1,-1),dfsu(1,-1);
ans=d1[1];
for(i=2;i<=n;i++)if(il[i])ans=min(ans,up[i]);else ans=min(ans,max(d1[i],up[i]));
printf("%d\n",ans);
return 0;
}