#include<iostream>
#include<cstring>
using namespace std;
int vis[101];
struct node{
int left,right,father,value;
}t[101];
int dfs(int x,int d){
if(!x||vis[x]) return 0;
vis[x]=1;
return dfs(t[x].left,d+1)+dfs(t[x].right,d+1)+dfs(t[x].father,d+1)+t[x].value*d;
}
int main(){
int n,ans=0x7f;
cin>>n;
for(int i=1;i<=n;i++){
cin>>t[i].value>>t[i].left>>t[i].right;
}
for(int i=1;i<=n;i++){
t[t[i].left].father=i;
t[t[i].right].father=i;
}
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
ans=min(ans,dfs(i,0));
}
cout<<ans;
return 0;
}