#include <bits/stdc++.h>
using namespace std;
const int N = 205;
int n, m, dp[N][N];
int en, first[N];
struct edge {
int e, d, next;
}ed[N];
void add_edge(int s, int e, int d) {
en++;
ed[en].e = e, ed[en].d = d;
ed[en].next = first[s];
first[s] = en;
}
void dfs(int u, int fa) {
for (int p = first[u]; ~p; p = ed[p].next) {
int e = ed[p].e, d = ed[p].d;
if (e == fa) continue;
dfs(e, u);
for (int j = m; j; j--) {
for (int k = 0; k + 1 <= j; k++) {
dp[u][j] = max(dp[u][j], dp[u][j - k - 1] + d + dp[e][k]);
}
}
}
}
int main() {
cin >> n >> m;
memset(first, -1, sizeof first);
for (int i = 1; i <= n; i++) {
int a, b, c;
cin >> a >> b >> c;
add_edge(a, b, c), add_edge(b, a, c);
}
dfs(1, -1);
cout << dp[1][m] << endl;
}