#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> pred(0);
int root(int x){
if (pred[x]==x){
return x;
}
else{
int r=root(pred[x]);
pred[x]=r;
return r;
}
}
bool issame(int a,int b){
return root(a) == root(b);
}
void join(int a,int b){
a=root(a);
b=root(b);
if (a%2==0){
pred[a]=b;
}
else{
pred[b]=a;
}
}
int main()
{
int n,m,k=0,rez=0;
cin >>n >> m;
vector <pair <int ,pair<int,int>>> edges;
for(int i=0;i<m;i++){
int a1,a2,v;
cin >> a1 >> a2 >> v;
edges.push_back({v,{a1,a2}});
}
sort(edges.begin(),edges.end());
for (int i=0;i<n;i++){
pred.push_back(i);
}
for (int i=0;i<n;i++){
int a,b;
a=edges[i].second.first;
b=edges[i].second.second;
cout << issame(a,b) <<' '<< root(a) <<' '<< root(b) << endl;
if (! issame(a,b)){
k++;
//cout << a<<' '<<b<<' ' << edges[i].first << endl;
rez +=edges[i].first;
join(a,b);
if (k==n-1){
break;
}
}
}
cout << rez;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3IgPGludD4gcHJlZCgwKTsKaW50IHJvb3QoaW50IHgpewogICAgaWYgKHByZWRbeF09PXgpewogICAgICAgIHJldHVybiB4OwogICAgfQogICAgZWxzZXsKICAgICAgICBpbnQgcj1yb290KHByZWRbeF0pOwogICAgICAgIHByZWRbeF09cjsKICAgICAgICByZXR1cm4gcjsKICAgIH0KICAgIAp9CmJvb2wgaXNzYW1lKGludCBhLGludCBiKXsKICAgIHJldHVybiByb290KGEpID09IHJvb3QoYik7Cn0Kdm9pZCBqb2luKGludCBhLGludCBiKXsKICAgIGE9cm9vdChhKTsKICAgIGI9cm9vdChiKTsKICAgIGlmIChhJTI9PTApewogICAgICAgIHByZWRbYV09YjsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcHJlZFtiXT1hOwogICAgfQp9CmludCBtYWluKCkKewogICAgaW50IG4sbSxrPTAscmV6PTA7CiAgICBjaW4gPj5uID4+IG07CiAgICB2ZWN0b3IgPHBhaXIgPGludCAscGFpcjxpbnQsaW50Pj4+IGVkZ2VzOwogICAgZm9yKGludCBpPTA7aTxtO2krKyl7CiAgICAgICAgaW50IGExLGEyLHY7CiAgICAgICAgY2luID4+IGExID4+IGEyID4+IHY7CiAgICAgICAgZWRnZXMucHVzaF9iYWNrKHt2LHthMSxhMn19KTsKICAgIH0KICAgIHNvcnQoZWRnZXMuYmVnaW4oKSxlZGdlcy5lbmQoKSk7CiAgICBmb3IgKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgcHJlZC5wdXNoX2JhY2soaSk7CiAgICB9CiAgICBmb3IgKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgaW50IGEsYjsKICAgICAgICBhPWVkZ2VzW2ldLnNlY29uZC5maXJzdDsKICAgICAgICBiPWVkZ2VzW2ldLnNlY29uZC5zZWNvbmQ7CiAgICAgICAgY291dCA8PCBpc3NhbWUoYSxiKSA8PCcgJzw8ICByb290KGEpIDw8JyAnPDwgcm9vdChiKSA8PCBlbmRsOwogICAgICAgIGlmICghIGlzc2FtZShhLGIpKXsKICAgICAgICAgICAgaysrOwogICAgICAgICAgICAvL2NvdXQgPDwgYTw8JyAnPDxiPDwnICcgPDwgZWRnZXNbaV0uZmlyc3QgPDwgZW5kbDsKICAgICAgICAgICAgcmV6ICs9ZWRnZXNbaV0uZmlyc3Q7CiAgICAgICAgICAgIGpvaW4oYSxiKTsKICAgICAgICAgICAgaWYgKGs9PW4tMSl7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgcmV6OwogICAgcmV0dXJuIDA7Cn0=