#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10;
int n,m;
vector<pair<int,int> > g[N];
int f[N];
bool cmp(int x,int y){
return x>y;
}
int sum;
void dfs(int x,int fa,int v){
vector<int> e,b;
for(int i=0;i<g[x].size();i++){
int y=g[x][i].first;
int z=g[x][i].second;
if(y==fa) continue;
dfs(y,x,v);
if(z+f[y]>=v) sum++;
else{
e.push_back(z+f[y]);
b.push_back(0);
}
}
sort(e.begin(),e.end(),cmp);
int l=0,r=e.size()-1;
while(l<=r){
while(l<r&&e[l]+e[r]<v) r--;
if(l==r) break;
sum++;
b[l++]=b[r--]=1;
}
for(int i=0;i<e.size();i++)
if(!b[i]){
f[x]=e[i];
return;
}
}
bool check(int x){
memset(f,0,sizeof(f));
sum=0;
dfs(1,0,x);
return sum>=m;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<n;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
g[x].push_back(make_pair(y,z));
g[y].push_back(make_pair(x,z));
}
int l=0,r=5e8,mid;
while(l<r-1){
mid=l+r>>1;
if(check(mid)) l=mid;
else r=mid;
}
printf("%d",check(r)?r:l);
return 0;
}