#include #define rep(i,n)for(int i=0;i<(n);i++) using namespace std; typedef pairP; int u[500]; vector

E[500]; int dp[500][5000]; int n,m; void dfs(int v,int p){ rep(i,m+1)dp[v][i]=u[v]; for(auto u:E[v]){ if(u.second==p)continue; dfs(u.second,v); for(int i=m;i>=u.first*2;i--)for(int j=0;j+u.first*2<=i;j++){ dp[v][i]=max(dp[v][i],dp[v][j]+dp[u.second][i-j-u.first*2]); } } } int main(){ scanf("%d%d",&n,&m); rep(i,n)scanf("%d",&u[i]); rep(i,n-1){ int a,b,c;scanf("%d%d%d",&a,&b,&c); E[a].push_back(P(c,b)); E[b].push_back(P(c,a)); } dfs(0,-1); cout<