from collections import deque n,m=map(int,input().split());m//=2 u=[int(input()) for i in range(n)] v=[[] for i in range(n)] for i in range(n-1): a,b,c=map(int,input().split()) v[a].append((b,c));v[b].append((a,c)) f=deque([(0,0,0)]) dp=[[-1]*(m+1) for i in range(n)] while f: q,w,e=f.pop() if len(v[q])>e: f.append((q,w,e+1)) if v[q][e][0]!=w: f.append((v[q][e][0],q,0)) else: dp[q][0]=u[q] for i,j in v[q]: for l in range(m,-1,-1): if dp[q][l]<0: continue for k in range(m+1): if l+k+j>m: break dp[q][j+l+k]=max(dp[q][j+l+k],dp[i][k]+dp[q][l]) print(max(dp[0]))