#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;
}