#define ri register unsigned int
#define it unsigned int
using namespace std;
it n,m,hd[50005],nxt[100005],to[100005],vl[100005],cnt;
it vis[50005],a[50005],tl,ans,f[50005],sum;
it rd(){
ri res=0,f=1;register char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())res=(res<<1)+(res<<3)+ch-'0';
return res*f;
}
void add(it x,it y,it z)
{nxt[++cnt]=hd[x];hd[x]=cnt;to[cnt]=y;vl[cnt]=z;}
void dfs(it x,it fa,it mn){
for(ri i=hd[x];i;i=nxt[i])
if(to[i]!=fa)dfs(to[i],x,mn);
tl=0;for(ri i=hd[x];i;i=nxt[i])
if(to[i]!=fa)a[++tl]=f[to[i]]+vl[i];
sort(a+1,a+1+tl);
for(ri i=tl;i&&a[i]>=mn;--i)--tl,++ans;
memset(vis,0,sizeof(vis));
for(ri i=1;i<=tl;++i)
if(!vis[i]){
it l=i+1,r=tl,zc=tl+1,md;
while(l<=r){
md=l+r>>1;
if(a[i]+a[md]>=mn)r=(zc=md)-1;
else l=md+1;
}
while(vis[zc]&&zc<=tl)++zc;
if(zc<=tl)vis[i]=vis[zc]=1,++ans;
}
f[x]=0;for(ri i=tl;i;--i)
if(!vis[i]){f[x]=a[i];return;}
}
int main(){
n=rd();m=rd();
it x,y,z;
for(ri i=1;i<n;++i){
x=rd();y=rd();z=rd();sum+=z;
add(x,y,z);add(y,x,z);
}
for(x=0,y=sum/m;x<=y;){
z=x+y>>1;
ans=0;dfs(rand()%n+1,0,z);
if(ans>=m)x=z+1;
else y=z-1;
}
printf("%d",x-1);
return 0;
}