#include <stdio.h>
#include <string.h>
#define min(a,b) (((a)<(b))?(a):(b))
int n,ans=99999999;
struct point{
int father;
int data;
int lchild;
int rchild;
}a[100010];
int check[100010]={0};
int bfs(int i,int dis){
if(!i||check[i])return 0;
check[i]=1;
return bfs(a[i].father,dis+1)+bfs(a[i].lchild,dis+1)+bfs(a[i].rchild,dis+1)+a[i].data*dis;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&a[i].data,&a[i].lchild,&a[i].rchild);
}
for(int i=1;i<=n;i++){
a[a[i].lchild].father=i;
a[a[i].rchild].father=i;
}
for(int i=1;i<=n;i++){
memset(check,0,sizeof(check));
printf("%d\n",bfs(i,0));
ans=min(ans,bfs(i,0));
}
printf("%d",ans);
return 0;
}