#include <bits/stdc++.h>
using namespace std;
int n, q;
vector<int> p[101];
int f[101][101];
int a[101];
int dfs(int i, int j) {
//f[i][j] i的子树 保留j根树枝 最多苹果数
if (p[i].size() == 0) return 0;//没有子节点
if (j == 0) return 0;
if (f[i][j] != 0) return f[i][j];
for (int k = 0; k <= j; k++) {
if (k == 0) f[i][j] = max(f[i][j], dfs(p[i][1], j - 1) + a[p[i][1]]);
else if (k == j) f[i][j] = max(f[i][j], dfs(p[i][0], j - 1) + a[p[i][0]]);
else f[i][j] = max(f[i][j], dfs(p[i][0], k - 1) + a[p[i][0]] + dfs(p[i][1], j - k - 1) + a[p[i][1]]);
}
return f[i][j];
}
int main() {
cin >> n >> q;
for (int i = 1; i < n; i++) {
int u, v, w;
cin >> u >> v >> w;
a[v] = w;
p[u].push_back(v);
}
cout << dfs(1, q);
return 0;
}