#include <iostream>
#include <cstring>
#include <vector>
#define int long long
using namespace std;
constexpr int N = 2e3 + 5;
int f[N][N];
int n, k, si[N];
vector<int> g[N], W[N];
void init(int u, int fa) {
si[u] = 1;
for (int l = 0; l < g[u].size(); ++l) {
int i = g[u][l];
if (i != fa) {
init(i, u);
si[u] += si[i];
}
}
}
void dfs(int u, int fa) {
f[u][0] = 0, f[u][1] = 0;
for (int l = 0; l < g[u].size(); ++l) {
int v = g[u][l], w = W[u][l];
if (v != fa) {
dfs(v, u);
for (int i = min(si[u], k); i >= 0; --i)
for (int j = 0; j <= i; ++j)
if (f[u][i - j] != 0x3f3f3f3f)
f[u][i] = max(f[u][i], f[u][i - j] + f[v][j] +
j * (k - j) * w + (si[v] - j) * ((n - k) - (si[v] - j)) * w);
}
}
}
signed main() {
cin >> n >> k;
for (int i = 1; i < n; ++i) {
int u, v, w;
cin >> u >> v >> w;
g[u].push_back(v);
W[u].push_back(w);
g[v].push_back(u);
W[v].push_back(w);
}
memset(f, 0x3f, sizeof(f));
init(1, 0);
dfs(1, 0);
cout << f[1][k];
return 0;
}