#include <bits/stdc++.h> using namespace std; const int inf = 1001001001; int n, i, x, y, z, l, r, h, s[100100]; long long m, cnt; vector<int> g[100100], f[100100]; void dfs(int i, int p, int d, int e, int w) { for (s[d] = w; e<d && s[d] - s[e]>h; e++); cnt += d - e; for (int j = 0; j<g[i].size(); j++) { int k = g[i][j]; if (k == p) continue; dfs(k, i, d + 1, e, w + f[i][j]); } } int main() { //cin >> n >> m; n = 100000; m = 1; for (i = 1; i < n; i++) { if (i < 10000) { x = i; y = i + 1; z = 1; } else { x = 10000; y = i + 1; z = 10000; } // scanf("%d%d%d", &x, &y, &z); g[x].push_back(y); f[x].push_back(z); g[y].push_back(x); f[y].push_back(z); } l = 1; r = inf; while (l<r) { h = (l + r) / 2; cnt = 0; dfs(1, 0, 0, 0, 0); if (cnt >= m) r = h; else l = h + 1; } printf("%d\n", r == inf ? -1 : r); return 0; }