#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 200010;
int n,m;
ll out[N];
vector<ll>g[N];
bool vis[N];
ll dist[N];
ll flag = 1e18;
ll ans = 1e18;
ll f[N];
ll w[N];
void add_edge(ll a,ll b)
{
g[a].push_back(b);
}
ll dfs1(int u)
{
vis[u] = true;
int res = 0;
int sum = 1;
for(int i = 0 ; i < g[u].size() ; i++)
{
if(!vis[g[u][i]])
{
int s =dfs1(g[u][i]);
res = max(res,s);
sum+=s;
}
}
res = max(res,n - sum);
f[u]=res;
return sum;
}
void dfs(ll u)
{
vis[u] = true;
ll res = 0;
for(ll i = 0 ; i < g[u].size() ; i++)
{
ll t = g[u][i];
if(!vis[t])
{
dist[t] = dist[u] + 1 ;
dfs(t);
}
}
}
int main()
{
cin>>n;
for(ll i = 1 ; i <= n ; i++)
{
ll x,y;
cin>>w[i]>>x>>y;
if(x!=0) {
add_edge(i, x);
add_edge(x, i);
}
if(y!=0) {
add_edge(y, i);
add_edge(i, y);
}
}
ll maxn = -1;
dfs1(1);
ll kk = 1 ;
for(int i = n ; i >= 1 ; i--)
{
if(flag >= f[i])
{
flag = f[i];
kk = i;
}
}
memset(vis,0,sizeof(vis));
dfs(kk);
ll sum = 0;
for(ll i = 1 ; i <= n ; i++)
{
if(i!=kk)
sum+=(ll)w[i]*dist[i];
}
cout<<sum;
return 0;
}