#include<iostream>
#include<cstdio>
using namespace std;
int n,q,map[105][105],f[105][105],l[105],r[105],a[105];
const int SIZE=1<<14;
char getc()
{
static char buf[SIZE],*begin=buf,*end=buf;
if(begin==end)
{
begin=buf;
end=buf+fread(buf,1,SIZE,stdin);
}
return *begin++;
}
int read()
{
int ret=0,sgn=0,ch=getc();
while(!isdigit(ch)) sgn|=ch=='-',ch=getc();
while(isdigit(ch)) ret=ret*10+ch-'0',ch=getc();
return sgn?-ret:ret;
}
void mt(int v)
{
for(int i=1;i<=n;i++)
{
if(map[v][i]>=0)
{
l[v]=i;
a[i]=map[v][i];
map[v][i]=-1;
map[i][v]=-1;
mt(i);
break;
}
}
for(int i=1;i<=n;i++)
{
if(map[v][i]>=0)
{
r[v]=i;
a[i]=map[v][i];
map[v][i]=-1;
map[i][v]=-1;
mt(i);
break;
}
}
}
int dp(int x,int y)
{
if(y==0) return 0;
if(l[x]==0&&r[y]==0) return a[x];
if(f[x][y]!=0) return f[x][y];
for(int i=0;i<=y-1;i++)
f[x][y]=max(f[x][y],dp(l[x],i)+dp(r[x],y-i-1)+a[x]);
return f[x][y];
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
n=read();
q=read();
q++;
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) map[i][j]=-1;
int xxx,yyy,zzz;
for(int i=1;i<=n-1;i++)
{
xxx=read();
yyy=read();
zzz=read();
map[xxx][yyy]=zzz;
map[yyy][xxx]=zzz;
}
mt(1);
cout<<dp(1,q);
return 0;
}