#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fti(i, x, y) for (int i = x; i <= y; ++i)
#define ftd(i, x, y) for (int i = x; i >= y; --i)
const int MA = 2e5 + 5;
int n, k, ans;
ll d[MA], da[MA], db[MA], mi = 1e18, f[MA];
bool s3 = 1;
vector <pair <int, ll>> con[MA];
vector <int> res;
void sub1()
{
int M = (1 << n) - 1;
fti(m, 1, M)
{
if (__builtin_popcount(m) != k) continue;
queue <int> q;
vector <int> t;
fti(i, 1, n) d[i] = 1e18;
fti(i, 1, n)
if ((m >> (i - 1)) & 1)
t.push_back(i), q.push(i), d[i] = 0;
while (!q.empty())
{
int u = q.front(); q.pop();
for (auto [v, w] : con[u])
if (d[v] > d[u] + w)
d[v] = d[u] + w, q.push(v);
}
ll ma = *max_element(d + 1, d + 1 + n);
if (ma < mi)
mi = ma, res = t;
}
cout << mi << '\n';
for (int u : res) cout << u << ' ';
}
void dfs(int u, int p, ll d[])
{
for (auto [v, w] : con[u])
if (v != p)
{
d[v] = d[u] + w; dfs(v, u, d);
}
}
void sub2()
{
dfs(1, 0, d);
int a = max_element(d + 1, d + 1 + n) - d;
dfs(a, 0, da);
int b = max_element(da + 1, da + 1 + n) - da;
dfs(b, 0, db);
fti(i, 1, n)
{
ll mx = max(da[i], db[i]);
if (mx < mi)
mi = mx, ans = i;
}
cout << mi << '\n' << ans;
}
vector <int> check (ll t)
{
vector <int> d, x;
int cur = 0;
fti(i, 1, n - 1)
{
if (f[i] - f[cur] > t)
d.push_back(i), cur = i;
if (d.size() == k) break;
}
if (f[n - 1] - f[cur] > t)
return x;
if (d.size() < k) d.push_back(n);
return d;
}
void sub3()
{
fti(i, 1, n - 1) f[i] += f[i - 1];
// fti(i, 1, n - 1) cout << f[i] << ' '; cout << '\n';
ll l = 0, r = f[n - 1];
while (l <= r)
{
ll c = (l + r) >> 1;
vector <int> d = check(c);
// cout << c << ": ";
// for (int u : d) cout << u << ' '; cout << '\n';
if (d.size() == k)
mi = c, res = d, r = c - 1;
else
l = c + 1;
}
cout << mi << '\n';
for (int u : res) cout << u << ' ';
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// freopen("park.inp", "r", stdin);
// freopen("park.out", "w", stdout);
cin >> n >> k;
fti(i, 2, n)
{
int u, v; ll w; cin >> u >> v >> w;
if (u + 1 != v) s3 = 0;
f[i - 1] = w;
con[u].push_back({v, w});
con[v].push_back({u, w});
}
if (n <= 20)
sub1();
else if (k == 1)
sub2();
else if (s3)
sub3();
return 0;
}