#include<bits/stdc++.h>

using namespace std;

long long MX, N, dis, rv[100009], stk[100009], H[100009], h[100009], aib[100009];
long long K, knt;
vector < pair < long long, long long > > v[100009];
vector < long long > fii[100009];
pair < long long, long long > nor[100009];

void dfs (long long nod, long long tata)
{
    for (vector < pair < long long, long long > > :: iterator it = v[nod].begin (); it != v[nod].end (); it ++)
        if (it->first != tata)
            H[it->first] = H[nod] + it->second, dfs (it->first, nod), fii[nod].push_back (it->first);
}

void Update (long long pos, long long val)
{
    while (pos <= dis)
        aib[pos] += val, pos += pos - (pos & (pos - 1));
}

long long Query (long long pos)
{
    long long sum = 0;
    while (pos)
        sum += aib[pos], pos &= pos - 1;
    return sum;
}

void solve (long long nod)
{
    long long p = 1, u = dis, mij, ras = dis + 1, lim = H[nod] - MX;
    while (p <= u)
    {
        mij = (p + u) >> 1;
        if (rv[mij] >= lim) ras = mij, u = mij - 1;
        else p = mij + 1;
    }
    knt += Query (dis - ras + 1);
    Update (dis - h[nod] + 1, +1);
    for (vector < long long > :: iterator it = fii[nod].begin (); it != fii[nod].end (); it ++)
        solve (*it);
    Update (dis - h[nod] + 1, -1);
}

long long Knt (long long val)
{
    MX = val, knt = 0;
    solve (1);
    for (int i=1; i<=dis; i++)
        aib[i] = 0;
    return knt;
}

int main()
{
//freopen ("input", "r", stdin);
//freopen ("output", "w", stdout);

scanf ("%lld %lld", &N, &K);
for (int i=1; i<N; i++)
{
    long long x, y, z;
    scanf ("%lld %lld %lld", &x, &y, &z);
    v[x].push_back (make_pair (y, z)), v[y].push_back (make_pair (x, z));
}
dfs (1, -1);

for (int i=1; i<=N; i++)
    nor[i] = make_pair (H[i], i);
sort (nor + 1, nor + N + 1);
for (int i=1; i<=N; i++)
{
    if (i == 1 || nor[i].first != nor[i - 1].first) rv[++dis] = nor[i].first;
    h[nor[i].second] = dis;
}

//printf ("%lld\n", Knt (5));
long long p = 0, u = 1LL << 45, mij, ras = -1;
while (p <= u)
{
    mij = (p + u) >> 1;
  //  printf ("%d -> %lld\n", mij, Knt (mij));
    if (Knt (mij) >= K) ras = mij, u = mij - 1;
    else p = mij + 1;
}
printf ("%lld\n", ras);

return 0;
}