#include <cstdio>
#include <vector>
#include <cstring>

using namespace std;

#define maxn 100010

int n, kk, med;
vector<int> v[maxn], w[maxn];
long long k, paths;
int st[maxn], f[maxn];

int df(int nod, int dst, int p)
{
    f[nod]=1;

    st[++kk]=dst;

    while(st[kk]-st[p]>med)
        ++p;

    paths=paths+kk-p;

    for(int i=0; i<v[nod].size(); ++i)
    {
        int fiu = v[nod][i];
        if(f[fiu])
            continue;

        df(fiu, dst+w[nod][i], p);
    }
    --kk;
}

int main()
{
    scanf("%d%lld", &n, &k);
    for(int i=1; i<n; ++i)
    {
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        v[a].push_back(b);
        v[b].push_back(a);
        w[a].push_back(c);
        w[b].push_back(c);
    }

    int left=0, right=1000000000, sol=-1;

    while(left<=right)
    {
        paths=0;
        kk=0;

        med=(left+right)/2;

        memset(f, 0, sizeof(f));
        df(1, 0, 1);

        if(paths<k)
        {
            sol=med;
            left=med+1;
        }
        else
            right=med-1;
    }

    printf("%d\n", sol+1);

    return 0;
}