#include<bits/stdc++.h>
using namespace std;
#define ll long long
vector<pair<ll,ll>>v[201000];
ll m,u,f[201000],g[201000],n,k;
ll f_func(ll x,ll p)
{
if(v[x].size()==1&&x!=0)
{
return 0;
}
ll i=1LL<<60,a=-(1LL<<60);
for(auto t:v[x])
{
ll y=t.first;
ll d=t.second;
if(y==p)
{
continue;
}
ll r=f_func(y,x);
if(r==0&&f[y]==1)
{
i=min(i,0LL);
a=max(a,0LL);
continue;
}
if(r<0&&r+d<=0)
{
f[x]=1;
}
if(r<0&&r+d>0)
{
r=0;
}
else
{
r+=d;
}
if(r>m)
{
u++;
g[y]=1;
r=min(-m+d,0LL);
if(-m+d<=0)
{
f[x]=1;
}
f[y]=1;
}
a=max(a,r);
i=min(i,r);
}
if(-i>=a)
{
return i;
}
return a;
}
int main()
{
cin>>n>>k;
for(ll i=0;i<n-1;++i)
{
ll a,b,c;
cin>>a>>b>>c;
a--;
b--;
v[a].push_back({b,c});
v[b].push_back({a,c});
}
ll h=0,j=1LL<<60;
while(h<j)
{
m=(h+j)/2;
u=0;
for(ll i=0;i<n;++i)
{
f[i]=0;
g[i]=0;
}
if(f_func(0,0)>0)
{
g[0]=1;
u++;
}
else if(f[0]==0)
{
g[0]=1;
u++;
}
if(u<=k)
{
j=m;
}
else
{
h=m+1;
}
}
m=h;
u=0;
for(ll i=0;i<n;++i)
{
f[i]=0;
g[i]=0;
}
if(f_func(0,0)>0)
{
g[0]=1;
u++;
}
else if(f[0]==0)
{
g[0]=1;
u++;
}
cout<<h<<endl;
vector<ll>o;
for(ll i=0;i<n;++i)
{
if(g[i]==1)
{
o.push_back(i+1);
}
}
for(ll i=0;i<n;++i)
{
if(o.size()<k&&g[i]==0)
{
o.push_back(i+1);
}
}
for(ll x:o)
{
cout<<x<<" ";
}
cout<<endl;
return 0;
}