#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
int n,indexx,ans=N,vis[N],dis[N],w[N],u[N],v[N],ans1=0;
struct node{
int from,to;
}mp[N];
void addedge(int x,int y){
mp[++indexx].from=x;
mp[indexx].to=y;
}
void bfs(int s){
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof(dis));
queue<int> q;
vis[s]=1;
q.push(s);
int step=0;
ans1=0;
while(!q.empty()){
int x=q.front();
q.pop();
step=dis[x]+1;
for(int i=1;i<=n;i++){
if(mp[i].to==x&&!vis[mp[i].from]){
dis[mp[i].from]=step;
q.push(mp[i].from);
vis[mp[i].from]=1;
// ans1+=step*w[mp[i].from];
}
if(mp[i].from==x&&!vis[mp[i].to]){
dis[mp[i].to]=step;
q.push(mp[i].to);
vis[mp[i].to]=1;
// ans1+=step*w[mp[i].to];
}
}
}
for(int i=1;i<=n;i++){
ans1+=dis[i]*w[i];
// cout<<dis[i]<<" ";
}
// cout<<endl;
ans=min(ans,ans1);
// cout<<s<<" "<<ans1<<endl;
}
int main(){
cin>>n;
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
for(int i=1;i<=n;i++){
cin>>w[i]>>u[i]>>v[i];
if(u[i]!=0) addedge(i,u[i]);
if(v[i]!=0) addedge(i,v[i]);
}
for(int i=1;i<=n;i++){
bfs(i);
}
cout<<ans;
return 0;
}