RT
#include<bits/stdc++.h>
#define ll long long
using namespace std;
template<typename T>void read(T &x){
int f=1;x=0;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=(x<<1)+(x<<3)+(c^48);
x*=f;
}
const int maxn=20010;
const int INF=INT_MAX;
int n;
ll f[maxn][41][41];
ll l[maxn],r[maxn];
ll a[maxn],b[maxn],c[maxn];
ll dfs(ll u,ll x,ll y){
if(u>=n) return c[u]*(a[u]+x)*(b[u]+y);
if(f[u][x][y]!=f[0][0][0]) return f[u][x][y];
return f[u][x][y]=min(dfs(l[u],x,y)+dfs(r[u],x,y+1),dfs(l[u],x+1,y)+dfs(r[u],x,y));
}
int main(){
read(n);
memset(f,63,sizeof(f));
for(int i=1;i<n;i++){
ll s,t;
read(s);read(t);
if(s>0) l[i]=s;
else l[i]=n-1-s;
if(t>0) r[i]=t;
else r[i]=n-1-t;
}
for(int i=1;i<=n;i++){
read(a[i+n-1]);read(b[i+n-1]);read(c[i+n-1]);
}
printf("%lld",dfs(1,0,0));
return 0;
}