from collections import deque def non_rec_dfs(s): stack = [] stack.append(~s) stack.append(s) par = [-1] * N dist = [0] * N inf = 10 ** 18 pre = [-inf] * (K + 1) pre[0] = 0 leaf = [0] * N while stack: u = stack.pop() if u >= 0: stack.append(~u) flag = 0 for v, c in G[u]: if v == par[u]: continue par[v] = u dist[v] = dist[u] + c flag = 1 stack.append(v) if not flag: leaf[u] = 1 else: u = ~u if par[u] == -1: continue leaf[par[u]] += leaf[u] dp = [-inf] * (K + 1) cost = D[(par[u], u)] for i in range(K + 1): dp[i] = pre[i] + cost * leaf[u] if i - cost >= 0: dp[i] = max(dp[i], pre[i - cost] + 2 * cost * leaf[u]) dp, pre = pre, dp return max(pre) N, K = map(int, input().split()) G = [[] for i in range(N)] D = dict() for i in range(N - 1): a, b, c = map(int, input().split()) a, b = a - 1, b - 1 G[a].append((b, c)) G[b].append((a, c)) D[(a, b)] = c D[(b, a)] = c print(non_rec_dfs(0))