// RandomUsername (Nikola Jovanovic)
// Contest Name
// Problem Name

#include <bits/stdc++.h>
#define DBG false
#define debug(x) if(DBG) printf("(ln %d) %s = %d\n", __LINE__, #x, x);
#define lld long long
#define ff(i,a,b) for(int i=a; i<=b; i++)
#define fb(i,a,b) for(int i=a; i>=b; i--)
#define par pair<int, int>
#define fi first
#define se second
#define mid (l+r)/2
#define INF 1000000000
#define MAXN 100005

using namespace std;

struct node
{
    vector<int> adj;
    vector<int> ws;
    int parent;
    int parw;
    int level;
    int sumtop;
};

int n, k;
node g[MAXN];
int st[MAXN][20];

void parents(int curr, int level, int sum)
{
    g[curr].sumtop = sum;
    g[curr].level = level;
    int sz = g[curr].adj.size();
    ff(i, 0, sz-1)
    {
        int nxt = g[curr].adj[i];
        if(g[curr].parent == nxt) continue;
        g[nxt].parent = curr;
        g[nxt].parw = g[curr].ws[i];
        parents(nxt, level+1, sum + g[curr].ws[i]);
    }
}



int cnt_l(int sum)
{
    int keep = sum;
    int ret = 0;
    //how many sums less than sum?
    ff(i, 1, n)
    {
        sum = keep;
        int LO = i;
        //each node
        //find the largest sum less than sum
        fb(deg, 17, 0)
        {
            int HI = st[LO][deg];
            if(HI == -1) continue;
            int currS = g[LO].sumtop - g[HI].sumtop;
            if(currS >= sum)
                continue;
            else
            {
                sum -= currS;
                LO = HI;
                ret += (1 << deg); //levelsClimbed
            }
        }
    }
    return ret;
}

int main()
{
    scanf("%d %d", &n, &k);
    ff(i, 1, n-1)
    {
        int u, v, w;
        scanf("%d %d %d", &u, &v, &w);
        g[u].adj.push_back(v);
        g[u].ws.push_back(w);
        g[v].adj.push_back(u);
        g[v].ws.push_back(w);
    }
    g[1].parent = -1;
    parents(1, 0, 0);
    ff(j, 0, 17)
    {
        //2^j th parent
        ff(i, 1, n)
        {
            if(j == 0)
            {
                st[i][j] = g[i].parent;
            }
            else
            {
                if(st[i][j-1] != -1)
                    st[i][j] = st[ st[i][j-1] ][j-1];
                else
                    st[i][j] = st[i][j-1];
            }
        }
    }

    // binsrch the actual sum
    int hi = INF;
    int lo = 0;
    while(hi > lo)
    {
        int pivot = (hi + lo) / 2 + 1;
        int L = cnt_l(pivot);
        //NAJVECI TAKO DA MU JE CNT_L < K

        if(L >= k) {hi = pivot - 1;}
        else {lo = pivot;} // L < K
    }
    printf("%d\n", hi);
    return 0;
}