#include<iostream>
#include<cmath>
#include<cstring>
#include <iomanip>
#include<queue>
#define N 111
using namespace std;
typedef long long ll;
int n;
ll tsize;
struct node
{
int val,lc,rc;
};
ll nodesum(struct node node[N],int root)
{
ll sum=node[root].val;
if(node[root].lc) sum+=nodesum(node,node[root].lc);
if(node[root].rc) sum+=nodesum(node,node[root].rc);
return sum;
}
ll initmin(struct node node[N],ll min,int root,int deep)
{
min+=node[root].val * deep;
if(node[root].lc) min=initmin(node,min,node[root].lc,deep+1);
if(node[root].rc) min=initmin(node,min,node[root].rc,deep+1);
return min;
}
ll mdis(struct node node[N],int root,int min)
{
ll x=nodesum(node,node[root].lc)+nodesum(node,node[root].rc);//不动
ll y=tsize-nodesum(node,root)+node[root].val+2*nodesum(node,node[root].rc);//左移
ll z=tsize-nodesum(node,root)+node[root].val+2*nodesum(node,node[root].lc);//右移
if(y<x && y<z) return mdis(node,node[root].lc,min-2*nodesum(node,node[root].lc)+tsize);
else if(z<x && z<y) return mdis(node,node[root].rc,min-2*nodesum(node,node[root].rc)+tsize);
else return min;
}
int main()
{
ll min=0;
struct node resident[N];
cin>>n;
for(int i=1;i<=n;i++) cin>>resident[i].val>>resident[i].lc>>resident[i].rc;
tsize=nodesum(resident,1);
min=initmin(resident,0,1,0);
min=mdis(resident,1,min);
cout<<min;
return 0;
}