/**
* author: orzvanh14 ( Độc cô cầu đặc )
* created: 18.04.2026 03:56:02
* too lazy to update time
**/
// i wants to take ioi
//binhtinhtutinkhongcaycunhungmotkhikhongcontutinnualatuyetvong
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn "\n"
#define pi pair<int, int>
#define ti tuple<int, int, int>
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define eb emplace_back
#define pb push_back
#define TASK " "
#define ms(a, x) memset(a, x, sizeof(a))
#define all(a) a.begin(), a.end()
#define All(a, n) a + 1, a + 1 + n
#define LOG 19
const int INF = 1e18;
const int N = 2e4 + 5;
const int maxn = 100 + 5;
const int mod = 1e9 + 7;
struct node{
int kc, u;
bool operator<(const node& other) const {
return kc > other.kc;
}
};
struct edge{
int u, v, w, id;
bool operator<(const edge& other) const {
return w > other.w;
}
};
edge edges[N];
int n, m, k;
int sz[N];
int par[N];
int p[N];
void make_sets(int s){
sz[s] = 1;
par[s] = s;
}
int get(int a){
if(a == par[a]) return a;
return par[a] = get(par[a]);
}
bool union_sets(int a, int b){
a = get(a);
b = get(b);
if(a != b){
if(sz[a] < sz[b]){
// sz[a] > sz[b]
swap(a, b);
}
sz[a] += sz[b];
par[b] = a;
return 1;
}
return 0;
}
void nhap(){
cin >> m >> n;
for(int i = 0; i < m; i++){
int x, y, w;
cin >> x >> y >> w;
edges[i].u = x;
edges[i].v = y;
edges[i].w = w;
edges[i].id = i + 1;
}
sort(edges, edges + m);
}
void solve(){
int ans =0;
vector<int> res;
for(int i = 1; i <= n; i++) make_sets(i);
for(int i= 0; i < m; i++){
int u = edges[i].u;
int v = edges[i].v;
int w = edges[i].w;
int idx = edges[i].id;
if(union_sets(u, v)){
ans += w;
res.pb(idx);
}
}
cout << ans << nn;
for(int x : res){
cout << x << nn;
}
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
nhap();
solve();
return 0;
}
LyoqCiAqICAgIGF1dGhvcjogIG9yenZhbmgxNCAoIMSQ4buZYyBjw7QgY+G6p3UgxJHhurdjICkKICogICAgY3JlYXRlZDogMTguMDQuMjAyNiAwMzo1NjowMgogKiAgICB0b28gbGF6eSB0byB1cGRhdGUgdGltZQoqKi8KLy8gaSB3YW50cyB0byB0YWtlIGlvaQovL2Jpbmh0aW5odHV0aW5raG9uZ2NheWN1bmh1bmdtb3RraGlraG9uZ2NvbnR1dGlubnVhbGF0dXlldHZvbmcKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbm4gIlxuIgojZGVmaW5lIHBpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgdGkgdHVwbGU8aW50LCBpbnQsIGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBUQVNLICIgIgoKI2RlZmluZSBtcyhhLCB4KSBtZW1zZXQoYSwgeCwgc2l6ZW9mKGEpKQojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksIGEuZW5kKCkKI2RlZmluZSBBbGwoYSwgbikgYSArIDEsIGEgKyAxICsgbgoKI2RlZmluZSBMT0cgMTkKCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBpbnQgTiA9IDJlNCArIDU7CmNvbnN0IGludCBtYXhuID0gMTAwICsgNTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CgoKc3RydWN0IG5vZGV7CglpbnQga2MsIHU7Cglib29sIG9wZXJhdG9yPChjb25zdCBub2RlJiBvdGhlcikgY29uc3QgewogICAgICAgIHJldHVybiBrYyA+IG90aGVyLmtjOwogICAgfQp9OwpzdHJ1Y3QgZWRnZXsKCWludCB1LCB2LCB3LCBpZDsKCWJvb2wgb3BlcmF0b3I8KGNvbnN0IGVkZ2UmIG90aGVyKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIHcgPiBvdGhlci53OwogICAgfQp9OwplZGdlIGVkZ2VzW05dOwppbnQgbiwgbSwgazsKaW50IHN6W05dOwppbnQgcGFyW05dOwppbnQgcFtOXTsKdm9pZCBtYWtlX3NldHMoaW50IHMpewogICAgc3pbc10gPSAxOwogICAgcGFyW3NdID0gczsKfQppbnQgZ2V0KGludCBhKXsKICAgIGlmKGEgPT0gcGFyW2FdKSByZXR1cm4gYTsKICAgIHJldHVybiBwYXJbYV0gPSBnZXQocGFyW2FdKTsKfQpib29sIHVuaW9uX3NldHMoaW50IGEsIGludCBiKXsKICAgIGEgPSBnZXQoYSk7CiAgICBiID0gZ2V0KGIpOwogICAgaWYoYSAhPSBiKXsKICAgICAgICBpZihzelthXSA8IHN6W2JdKXsKICAgICAgICAgICAgLy8gc3pbYV0gPiBzeltiXQogICAgICAgICAgICBzd2FwKGEsIGIpOwogICAgICAgIH0KICAgICAgICBzelthXSArPSBzeltiXTsKICAgICAgICBwYXJbYl0gPSBhOwogICAgICAgIHJldHVybiAxOwogICAgfQogICAgcmV0dXJuIDA7Cn0Kdm9pZCBuaGFwKCl7CgljaW4gPj4gbSA+PiBuOwoJZm9yKGludCBpID0gMDsgaSA8IG07IGkrKyl7CiAgICAgICAgaW50IHgsIHksIHc7CiAgICAgICAgY2luID4+IHggPj4geSA+PiB3OwogICAgICAgIGVkZ2VzW2ldLnUgPSB4OwogICAgICAgIGVkZ2VzW2ldLnYgPSB5OwogICAgICAgIGVkZ2VzW2ldLncgPSAgdzsKICAgICAgICBlZGdlc1tpXS5pZCA9IGkgKyAxOwogICAgfQoJc29ydChlZGdlcywgZWRnZXMgKyBtKTsKfQp2b2lkIHNvbHZlKCl7CglpbnQgYW5zID0wOwoJdmVjdG9yPGludD4gcmVzOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIG1ha2Vfc2V0cyhpKTsKCWZvcihpbnQgaT0gMDsgaSA8IG07IGkrKyl7CiAgICAgICAgaW50IHUgPSBlZGdlc1tpXS51OwogICAgICAgIGludCB2ID0gZWRnZXNbaV0udjsKICAgICAgICBpbnQgdyA9IGVkZ2VzW2ldLnc7CiAgICAgICAgaW50IGlkeCA9IGVkZ2VzW2ldLmlkOwogICAgICAgIGlmKHVuaW9uX3NldHModSwgdikpewogICAgICAgICAgICBhbnMgKz0gdzsKICAgICAgICAgICAgcmVzLnBiKGlkeCk7CiAgICAgICAgfQoKCX0KCWNvdXQgPDwgYW5zIDw8IG5uOwoJZm9yKGludCB4IDogcmVzKXsKICAgICAgICBjb3V0IDw8IHggPDwgbm47Cgl9Cn0Kc2lnbmVkIG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoJbmhhcCgpOwoJc29sdmUoKTsKCXJldHVybiAwOwp9Cg==