#include<bits/stdc++.h>
using namespace std;
long long n,lmax,pmax,bmax;
struct tree{
int to,nex,val;
}tb[200010];
void dfs(int dq,int len,int zt){
if(zt==1){
for(int i=1;i<n;i++){
if(tb[dq].to==tb[i].nex){
if(lmax<len+tb[i].val){
lmax=len+tb[i].val;
pmax=tb[i].to;
bmax=i;
}
dfs(i,len+tb[i].val,1);
}
}
}
else{
for(int i=n;i<=(n-1)*2;i++){
if(tb[dq].to==tb[i].nex){
if(lmax<len+tb[i].val){
lmax=len+tb[i].val;
pmax=tb[i].to;
bmax=i;
}
dfs(i,len+tb[i].val,2);
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
cin>>tb[i].nex>>tb[i].to>>tb[i].val;
tb[i+n-1].nex=tb[i].to;
tb[i+n-1].to=tb[i].nex;
tb[i+n-1].val=tb[i].val;
}
for(int i=n;i<=(n-1)*2;i++)
cout<<tb[i].nex<<" "<<tb[i].to<<" "<<tb[i].val<<endl;
pmax=1;
dfs(1,tb[1].val,1);
lmax=0;
dfs(bmax,tb[bmax+n-1].val,2);
cout<<lmax<<" "<<pmax<<" "<<bmax;
return 0;
}