#include<bits/stdc++.h>
using namespace std;
const long long MX=201000,INF=0x3f3f3f3f3f3f3f3f;
vector<pair<long long,long long > >vec[MX];
inline void Add(long long x,long long y,long long w){
vec[x].push_back(make_pair(y,w));
}
inline bool cmp(pair<long long,long long> a,pair<long long,long long> b){
return a.first<b.first;
}
long long n,k,rot=1;
long long dist[MX]={0};
void dfs(long long now,long long fa){
for(auto j:vec[now]){
long long to=j.first,w=j.second;
if(to==fa) continue;
dist[to]=dist[now]+w;
dfs(to,now);
}
}
long long sum=0,mid,lf;
void dfs1(long long now,long long fa){
for(auto j:vec[now]){
long long to=j.first,w=j.second;
if(to==fa) continue;
lf+=w*2;
if(lf>mid) sum++,lf=dist[to]*2;
dfs1(to,now);
}
}
bool check(){
lf=0;sum=1;
dfs1(rot,0);
return sum<=k;
}
signed main(){
scanf("%lld%lld",&n,&k);
for(long long i=1;i<n;i++){
long long x,y,w;scanf("%lld%lld%lld",&x,&y,&w);
Add(x,y,w);Add(y,x,w);
}
for(long long i=1;i<=n;i++) sort(vec[i].begin(),vec[i].end(),cmp);
dfs(1,0);
long long l=1,r=1e17,ans;
while(l<=r){
mid=l+r>>1;
if(check()){
r=mid-1;
ans=mid;
}
else l=mid+1;
}
printf("%lld",ans);
return 0;
}