#include<iostream>
#include<cstdio>
#include<cmath>
#include<memory.h>
using namespace std;
const long long INF=0x7fffffff;
long long n,q,a,b,c,f[105][105],head[105];
long long sum,father[105];
struct edges{
int pre;
int to;
int val;
}edge[105];
void add_edge(int from,int to,int v)
{
sum++;
father[to]=from;
edge[sum].pre=head[from];
edge[sum].to=to;
edge[sum].val=v;
head[from]=sum;
}
void dp(int node,int fa)
{
for(int i=head[node];i;i=edge[i].pre)
{
int u=edge[i].to,v=edge[i].val;
if(u==fa) continue;
dp(u,node);
for(int j=q;j>1;j--)
for(int k=0;k<j;k++)
f[node][j]=max(f[node][j],f[u][k]+f[node][j-k-1]+v);
}
}
int main()
{
father[1]=0;
cin>>n>>q;
for(int i=1;i<=n-1;i++)
{
cin>>a>>b>>c;
if(father[a]!=0) add_edge(a,b,c);
else add_edge(b,a,c);
}
dp(1,0);
cout<<f[1][q];
return 0;
}