#include<bits/stdc++.h>
#define ll __int128
#define reg register
#define db double
#define il inline
#define int __int128
using namespace std;
void read(int &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
//void read(ll &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
void print(int x){
if(x<10)putchar(x+'0');
else{
print(x/10);putchar(x%10+'0');
}
}
const int N=1e5+5;
ll a[N],b[N],c[N],n;
ll day[N];
vector<int>g[N];
int fa[N];
int vis[N];
void dfs(int x,int f){
vis[x]=1;
for(int i:g[x]){
if(i==f)continue;
fa[i]=x;
dfs(i,x);
}
}
struct node{
ll la,id;
}z[N];
bool cmp(node a,node b){
return a.la<b.la;
}
bool check(int x){
memset(vis,0,sizeof(vis));
vis[0]=1;
for(int i=1;i<=n;i++){
z[i].la=0;
z[i].id=i;
if(x>=day[i]&&day[i]!=0){
if(x-day[i]+1>=a[i]){
z[i].la=x-a[i]+1;
}else{
int l=0,r=day[i]-1,mid;
while(l<=r){
mid=(l+r)/2;
if((day[i]-mid)*b[i]+(mid+day[i]-1)*(day[i]-mid)/2*c[i]+x-day[i]+1>=a[i]){
z[i].la=mid;
l=mid+1;
}else{
r=mid-1;
}
}
}
}else{
ll l=0,r=x-1,mid;
while(l<=r){
mid=(l+r)/2;
if((x-mid+1)*b[i]+(mid+x)*(x-mid+1)/2*c[i]>=a[i]){
z[i].la=mid;
l=mid+1;
}else{
r=mid-1;
}
}
}
if(z[i].la==0)return 0;
// print(i);cout<<' ';print(z[i].la);puts("");
// cout<<x<<' '<<z[i].la<<endl;
}
sort(z+1,z+1+n,cmp);
int tim=0;
for(int i=1;i<=n;i++){
if(vis[i])continue;
int j=z[i].id;
while(!vis[j]){
vis[j]=1;
tim++;
j=fa[j];
}
if(tim>z[i].la)return 0;
}
return 1;
}
signed main(){
read(n);
for(int i=1;i<=n;i++){
read(a[i]);read(b[i]);read(c[i]);
ll l=0,r=100000000,mid;
if(c[i]<0)
while(l<=r){
mid=(l+r)/2;
if(c[i]*mid+b[i]<=1){
day[i]=mid;
r=mid-1;
}else{
l=mid+1;
}
}
// cout<<day[i]<<endl;
}
for(int u,v,i=1;i<n;i++){
read(u);read(v);
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1,0);
ll l=n,r=1e18,ans=0,mid;
check(33577724);return 0;
while(l<=r){
mid=(l+r)/2;
if(check(mid)){
ans=mid;r=mid-1;
}else{
l=mid+1;
}
}
print(ans);
cout<<endl<<endl<<endl<<endl;
return 0;
}