#define rep(i, n) for (int i = 0; i < (int)(n); i++) #define ALL(v) v.begin(), v.end() typedef long long ll; #include using namespace std; vector G[110]; int dep[110]; int chi[110]; int A[110],B[110],C[110],D[110]; int dfs(int v,int p,int d){ dep[v]=d; int tmp=0; if(G[v].size()==1 && v!=0){ return chi[v]=1; } for(auto nv:G[v]){ if(nv==p) continue; tmp+=dfs(nv,v,d+1); } return chi[v]=tmp; } int main(){ int n,k; cin>>n>>k; int ans=0; rep(i,n-1){ int a,b,c; cin>>a>>b>>c; a--,b--; A[i]=a,B[i]=b,C[i]=c; G[a].push_back(b); G[b].push_back(a); } dfs(0,-1,0); rep(i,n){ if(dep[A[i]] m; m[0]=0; rep(i,n-1){ map mm; for(auto x:m){ mm[x.first]=max(x.second,mm[x.first]); mm[x.first+C[i]]=max(mm[x.first+C[i]],x.second+D[i]); } m=mm; } int ma=0; for(auto x:m){ if(x.first<=k) ma=max(ma,x.second); } cout<