#include #include #include using namespace std; #define ll long long int m; vector u; vector>> g; vector f(int v, int p){ vector a(m+1, u[v]); for(auto q: g[v]){ int w = q.first, c = q.second; if(w == p) continue; auto b = f(w, v); for(int i=m; i>=0; --i) for(int j=0; j<=i-c*2; ++j) a[i] = max(a[i], a[i-j-c*2]+b[j]); } return a; } int main(){ int n; cin >> n >> m; u.resize(n); for(ll& i: u) cin >> i; g.resize(n); for(int i=0; i> a >> b >> c; g[a].emplace_back(b, c); g[b].emplace_back(a, c); } cout << f(0, 0)[m] << endl; return 0; }