#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=4e5+10;
int h[N],e[N],ne[N],w[N],idx;
void add(int a,int b,int c)
{
e[++idx]=b;
ne[idx]=h[a];
h[a]=idx;
w[idx]=c;
}
int n,m,sum;
int d[N];
int num;
void dfs(int x,int f,int len)
{
int ss=0;
for(int i=h[x];i;i=ne[i])
if(e[i]!=f)
{
dfs(e[i],x,len);
}
const int az=ss;
vector<int> stk;
stk.push_back(0);
int top=0;
for(int i=h[x];i;i=ne[i])
if(e[i]!=f) stk.push_back(d[e[i]]+w[i]),top++;
sort(stk.begin(),stk.end());
while(stk[top]>=len)
{
top--;
num++;
}
int l=1,r=top,maxn=0;
while(r-l>=1)
{
for(;stk[l]+stk[r]<len;l++) maxn=max(maxn,l);
if(l<r)
{
num++;
l++,r--;
}
}
if(l==r) maxn=l;
d[x]=stk[maxn];
stk.clear();
}
bool got(int len)
{
memset(d,0,sizeof(d));
num=0;
dfs(1,0,len);
if(num>=m) return 1;
else return 0;
}
signed main() {
cin>>n>>m;
for(int i=1;i<n;i++)
{
int a,b,c;
cin>>a>>b>>c;
add(a,b,c);
add(b,a,c);
sum+=c;
}
int l=0,r=sum,ans;
//cout<<sum<<endl;
while(l<=r)
{
int mid=l+r>>1;
if(got(mid)) l=mid+1,ans=mid;
else r=mid-1;
}
cout<<ans;
}