#include <stdio.h>
#include <stdlib.h>
int minx=0x3f3f3f3f;
typedef struct node1 {
int index;
int num;
int cleft;
int cright;
}node;
typedef struct node2 {
struct node1 data;
struct node2 *left;
struct node2 *right;
}tree;
tree *getnode(node x) {
tree *cnt=(tree*)malloc(sizeof(tree));
cnt->data.index=x.index;
cnt->data.cleft=x.cleft;
cnt->data.cright=x.cright;
cnt->data.num=x.num;
cnt->left=NULL;
cnt->right=NULL;
}
void insert(tree **t, node x) {
if(!(*t)) return;
tree *cnt=NULL;
if((*t)->data.cleft==0 && ((*t)->data.cright==0)) return;
if((*t)->data.cleft==x.index) {
cnt=getnode(x);
(*t)->left=cnt;
return ;
}
if((*t)->data.cright==x.index) {
cnt=getnode(x);
(*t)->right=cnt;
return ;
}
insert(&(*t)->left, x);
insert(&(*t)->right, x);
}
tree *search(tree *t, int x) {
if(t) {
if(t->data.index==x) return t;
else {
tree *cnt;
cnt=search(t->left, x);
if(!cnt) cnt=search(t->right, x);
return cnt;
}
}
return NULL;
}
tree *findLCA(tree *t, int index1, int index2) {
if(t==NULL) return NULL;
if(t->data.index==index1||t->data.index==index2) return t;
tree *left_LCA=findLCA(t->left, index1, index2);
tree *right_LCA=findLCA(t->right, index1, index2);
if(left_LCA&&right_LCA) return t;
return (left_LCA!=NULL)?left_LCA:right_LCA;
}
int findlevel(tree *t, int indexx, int level) {
if(t==NULL) return -1;
if(t->data.index==indexx) return level;
int lev=findlevel(t->left, indexx, level+1);
if(lev==-1) return findlevel(t->right, indexx, level+1);
else return lev;
}
int mindis(tree *t, int index1, int index2) {
tree *lca=findLCA(t, index1, index2);
if(!lca) return -1;
int dis_lca=findlevel(t, lca->data.index, 0);
int dis_n1=findlevel(t, index1, 0);
int dis_n2=findlevel(t, index2, 0);
int diss=dis_n1+dis_n2-2*dis_lca;
return diss;
}
void inorder(tree *t) {
if(t) {
inorder(t->left);
printf("%d ", t->data.index);
inorder(t->right);
}
}
int n;
node a;
int d=0;
tree *t=NULL;
int main() {
scanf("%d", &n);
scanf("%d%d%d", &a.num, &a.cleft, &a.cright);
a.index=1;
t=getnode(a);
for(int i=2; i<=n; i++) {
scanf("%d%d%d", &a.num, &a.cleft, &a.cright);
a.index=i;
insert(&t, a);
}
for(int i=1; i<=n; i++) {
d=0;
for(int j=1; j<=n; j++) {
tree *cnt=search(t, j);
int k=cnt->data.num;
d+=mindis(t, i, j)*k;
if(j==n&&d<=minx) minx=d;
}
}
printf("%d", minx);
return 0;
}