#include<cstdio>
#include<iostream>
#include<queue>
#define forn(i, a, b) for(int i = a; i <= b; i++)
int min(int a, int b)
{
return (a < b) ? (a) : (b);
}
using namespace std;
struct node
{
int fa;
int le, ri;
int mem;
};
struct node2
{
int mec;
int dis;
};
bool vis[110][110];
node hi[110];
queue < node2 > que;
int l_ans;
int ans = 0x3f3f3f3f;
int n;
int bfs(int nk)
{
l_ans = 0;
while(!que.empty())
que.pop();
node2 io;
vis[nk][nk] = 1;
io.mec = nk;
io.dis = 0;
que.push(io);
while(!que.empty())
{
node2 kc = que.front();
que.pop();
if(!vis[hi[kc.mec].le][nk])
{
node2 llo;
llo.dis = kc.dis + 1;
llo.mec = hi[kc.mec].le;
vis[hi[kc.mec].le][nk] = 1;
l_ans += llo.dis * hi[llo.mec].mem;
que.push(llo);
}
if(!vis[hi[kc.mec].ri][nk])
{
node2 rro;
rro.dis = kc.dis + 1;
rro.mec = hi[kc.mec].ri;
vis[hi[kc.mec].ri][nk] = 1;
l_ans += rro.dis * hi[rro.mec].mem;
que.push(rro);
}
if(!vis[hi[kc.mec].fa][nk])
{
node2 ffo;
ffo.dis = kc.dis + 1;
ffo.mec = hi[kc.mec].fa;
vis[hi[kc.mec].fa][nk] = 1;
l_ans += ffo.dis * hi[ffo.mec].mem;
que.push(ffo);
}
}
return l_ans;
}
int main()
{
cin >> n;
forn(i, 1, n)
{
cin >> hi[i].mem >> hi[i].le >> hi[i].ri;
hi[hi[i].le].fa = i;
hi[hi[i].ri].fa = i;
}
forn(i, 1, n)
{
ans = min(ans, bfs(i));
}
cout << ans;
return 0;
}