#include<bits/stdc++.h>
using namespace std;
int ans=0;
int n,m;
int x,y,value;
const int maxn=1e3+5;
int dp[maxn][maxn];
struct data
{ int to;
int w;
};
vector<data>h[maxn];
int dfs(int u,int father)
{
for(int i=1;i<h[u].size();i++)
{
int u=h[u][i].to,value=h[u][i].w;
if(to==father)continue;
int p=dfs(to,u)+1;
ans+=p;
for(int j=min(ans,m);j>=1;--j)
{
for(int k=1;k<=min(j,p);k++)
dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[to][k-1]+value);
}
}
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>x>>y>>value;
h[x].push_back((data){int y,value});
h[y].push_back((data){int x,value});
}
dfs(1,0);
printf("%d",&dp[1][m]);
return 0;
}