#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
vector<pair<int,int> >a[maxn];
int c[maxn],n;
long long cnt[maxn],f[maxn],num,sum,ans;
void dfs(int x,int fa,int d){
cnt[x]=c[x];
sum+=c[x]*d;
for(int i=0;i<a[x].size();i++){
int y=a[x][i].first;
int len=a[x][i].second;
if(y==fa)continue;
dfs(y,x,d+len);
cnt[x]+=cnt[y];
}
}
void dfs_(int x,int fa){
if(sum<ans)ans=sum;
for(int i=0;i<a[x].size();i++){
int y=a[x][i].first;
int len=a[x][i].second;
if(y==fa)continue;
sum+=(num-cnt[y])*len-cnt[y]*len;
dfs_(y,x);
sum-=(num-cnt[y])*len-cnt[y]*len;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>c[i];
num+=c[i];
}
for(int i=1;i<n;i++){
int x,y,z;
cin>>x>>y>>z;
a[x].push_back(make_pair(y,z));
a[y].push_back(make_pair(x,z));
}
dfs(1,0,0);
ans=sum;
dfs_(1,0);
cout<<ans;
}