#include "race.h"
#include <queue>
#include <vector>
using namespace std;
#define MAXN 200005
#define MAXK 1000006
typedef pair<int,int> pii;
static int N,K,M,MM,ans=1e9;
static bool del[MAXN];
static vector<int> con[MAXN],conv[MAXN];
static int mom[MAXN],cnt[MAXN],dep[MAXN],chk[MAXN];
static int min_cnt[MAXK],min_cnt_chk[MAXK],head,tail;
static pii que[MAXN];
void ff(int n)
{
int i,k;
cnt[n] = 1; chk[n] = M;
for (i=con[n].size();i--;){
k = con[n][i];
if (del[k] || chk[k] == M) continue;
mom[k] = n;
ff(k);
cnt[n] += cnt[k];
}
}
int get_cen(int n,int all)
{
int i,k;
for (i=con[n].size();i--;){
k = con[n][i];
if (del[k] || k == mom[n]) continue;
if (cnt[k] > all/2) return get_cen(k,all);
}
return n;
}
void dfs(int n,int sum)
{
int i,k,v;
chk[n] = M;
que[tail++] = pii(sum,dep[n]);
for (i=con[n].size();i--;){
k = con[n][i]; v = conv[n][i];
if (del[k] || chk[k] == M) continue;
mom[k] = n; dep[k] = dep[n]+1;
dfs(k,sum+v);
}
}
void dnc(int root)
{
int i,j,k,v,cen;
pii q;
++M; ff(root);
cen = get_cen(root,cnt[root]);
/* process */
min_cnt[0] = 0; min_cnt_chk[0] = ++MM;
for (i=con[cen].size();i--;){
k = con[cen][i]; v = conv[cen][i];
if (del[k]) continue;
head = tail = 0; dep[k] = 1;
++M; chk[cen] = M; dfs(k,v);
for (j=0;j<tail;j++){
q = que[j];
if (q.first > K) continue;
if (min_cnt_chk[K-q.first] == MM) ans = min(ans,min_cnt[K-q.first]+q.second);
}
while (head != tail){
q = que[head++];
if (q.first > K) continue;
if (min_cnt_chk[q.first] != MM || min_cnt[q.first] > q.second){
min_cnt_chk[q.first] = MM;
min_cnt[q.first] = q.second;
}
}
}
/* process end */
del[cen] = 1;
for (i=con[cen].size();i--;){
k = con[cen][i];
if (del[k]) continue;
dnc(k);
}
}
int best_path(int n, int k, int H[][2], int L[])
{
int i,j,a,b,c;
N = n; K = k;
for (i=0;i<N-1;i++){
a = H[i][0]+1, b = H[i][1]+1, c = L[i];
con[a].push_back(b); conv[a].push_back(c);
con[b].push_back(a); conv[b].push_back(c);
}
dnc(1);
return ans==1e9?-1:ans;
}
I2luY2x1ZGUgInJhY2UuaCIKI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBNQVhOIDIwMDAwNQojZGVmaW5lIE1BWEsgMTAwMDAwNgp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwoKc3RhdGljIGludCBOLEssTSxNTSxhbnM9MWU5OwpzdGF0aWMgYm9vbCBkZWxbTUFYTl07CnN0YXRpYyB2ZWN0b3I8aW50PiBjb25bTUFYTl0sY29udltNQVhOXTsKCnN0YXRpYyBpbnQgbW9tW01BWE5dLGNudFtNQVhOXSxkZXBbTUFYTl0sY2hrW01BWE5dOwpzdGF0aWMgaW50IG1pbl9jbnRbTUFYS10sbWluX2NudF9jaGtbTUFYS10saGVhZCx0YWlsOwpzdGF0aWMgcGlpIHF1ZVtNQVhOXTsKCnZvaWQgZmYoaW50IG4pCnsKICAgIGludCBpLGs7CiAgICBjbnRbbl0gPSAxOyBjaGtbbl0gPSBNOwogICAgZm9yIChpPWNvbltuXS5zaXplKCk7aS0tOyl7CiAgICAgICAgayA9IGNvbltuXVtpXTsKICAgICAgICBpZiAoZGVsW2tdIHx8IGNoa1trXSA9PSBNKSBjb250aW51ZTsKICAgICAgICBtb21ba10gPSBuOwogICAgICAgIGZmKGspOwogICAgICAgIGNudFtuXSArPSBjbnRba107CiAgICB9Cn0KCmludCBnZXRfY2VuKGludCBuLGludCBhbGwpCnsKICAgIGludCBpLGs7CiAgICBmb3IgKGk9Y29uW25dLnNpemUoKTtpLS07KXsKICAgICAgICBrID0gY29uW25dW2ldOwogICAgICAgIGlmIChkZWxba10gfHwgayA9PSBtb21bbl0pIGNvbnRpbnVlOwogICAgICAgIGlmIChjbnRba10gPiBhbGwvMikgcmV0dXJuIGdldF9jZW4oayxhbGwpOwogICAgfQogICAgcmV0dXJuIG47Cn0KCnZvaWQgZGZzKGludCBuLGludCBzdW0pCnsKICAgIGludCBpLGssdjsKICAgIGNoa1tuXSA9IE07CiAgICBxdWVbdGFpbCsrXSA9IHBpaShzdW0sZGVwW25dKTsKICAgIGZvciAoaT1jb25bbl0uc2l6ZSgpO2ktLTspewogICAgICAgIGsgPSBjb25bbl1baV07IHYgPSBjb252W25dW2ldOwogICAgICAgIGlmIChkZWxba10gfHwgY2hrW2tdID09IE0pIGNvbnRpbnVlOwogICAgICAgIG1vbVtrXSA9IG47IGRlcFtrXSA9IGRlcFtuXSsxOwogICAgICAgIGRmcyhrLHN1bSt2KTsKICAgIH0KfQoKdm9pZCBkbmMoaW50IHJvb3QpCnsKICAgIGludCBpLGosayx2LGNlbjsKICAgIHBpaSBxOwogICAgKytNOyBmZihyb290KTsKICAgIGNlbiA9IGdldF9jZW4ocm9vdCxjbnRbcm9vdF0pOwogICAgLyogcHJvY2VzcyAqLwogICAgbWluX2NudFswXSA9IDA7IG1pbl9jbnRfY2hrWzBdID0gKytNTTsKICAgIGZvciAoaT1jb25bY2VuXS5zaXplKCk7aS0tOyl7CiAgICAgICAgayA9IGNvbltjZW5dW2ldOyB2ID0gY29udltjZW5dW2ldOwogICAgICAgIGlmIChkZWxba10pIGNvbnRpbnVlOwogICAgICAgIGhlYWQgPSB0YWlsID0gMDsgZGVwW2tdID0gMTsKICAgICAgICArK007IGNoa1tjZW5dID0gTTsgZGZzKGssdik7CiAgICAgICAgZm9yIChqPTA7ajx0YWlsO2orKyl7CiAgICAgICAgICAgIHEgPSBxdWVbal07CiAgICAgICAgICAgIGlmIChxLmZpcnN0ID4gSykgY29udGludWU7CiAgICAgICAgICAgIGlmIChtaW5fY250X2Noa1tLLXEuZmlyc3RdID09IE1NKSBhbnMgPSBtaW4oYW5zLG1pbl9jbnRbSy1xLmZpcnN0XStxLnNlY29uZCk7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChoZWFkICE9IHRhaWwpewogICAgICAgICAgICBxID0gcXVlW2hlYWQrK107CiAgICAgICAgICAgIGlmIChxLmZpcnN0ID4gSykgY29udGludWU7CiAgICAgICAgICAgIGlmIChtaW5fY250X2Noa1txLmZpcnN0XSAhPSBNTSB8fCBtaW5fY250W3EuZmlyc3RdID4gcS5zZWNvbmQpewogICAgICAgICAgICAgICAgbWluX2NudF9jaGtbcS5maXJzdF0gPSBNTTsKICAgICAgICAgICAgICAgIG1pbl9jbnRbcS5maXJzdF0gPSBxLnNlY29uZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIC8qIHByb2Nlc3MgZW5kICovCiAgICBkZWxbY2VuXSA9IDE7CiAgICBmb3IgKGk9Y29uW2Nlbl0uc2l6ZSgpO2ktLTspewogICAgICAgIGsgPSBjb25bY2VuXVtpXTsKICAgICAgICBpZiAoZGVsW2tdKSBjb250aW51ZTsKICAgICAgICBkbmMoayk7CiAgICB9Cn0KCmludCBiZXN0X3BhdGgoaW50IG4sIGludCBrLCBpbnQgSFtdWzJdLCBpbnQgTFtdKQp7CiAgICBpbnQgaSxqLGEsYixjOwogICAgTiA9IG47IEsgPSBrOwogICAgZm9yIChpPTA7aTxOLTE7aSsrKXsKICAgICAgICBhID0gSFtpXVswXSsxLCBiID0gSFtpXVsxXSsxLCBjID0gTFtpXTsKICAgICAgICBjb25bYV0ucHVzaF9iYWNrKGIpOyBjb252W2FdLnB1c2hfYmFjayhjKTsKICAgICAgICBjb25bYl0ucHVzaF9iYWNrKGEpOyBjb252W2JdLnB1c2hfYmFjayhjKTsKICAgIH0KICAgIGRuYygxKTsKICAgIHJldHVybiBhbnM9PTFlOT8tMTphbnM7Cn0K