#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct Edge {
int s, e, cost;
Edge(int s, int e, int cost) : s(s), e(e), cost(cost) { }
bool operator < (const Edge &x) const {
return cost < x.cost;
}
};
int N, M;
vector<Edge> edges;
int parent[50003];
int get_parent(int x) {
if (x == parent[x]) {
return x;
}
parent[x] = get_parent(parent[x]);
return parent[x];
}
void kruskal() {
sort(edges.begin(), edges.end());
for (int i = 1; i <= N; i ++) {
parent[i] = i;
}
int res = 0;
for (int i = 0; i < M; i ++) {
int pa = get_parent(edges[i].s);
int pb = get_parent(edges[i].e);
if (pa == pb) {
continue;
}
res += edges[i].cost;
parent[pa] = pb;
}
printf("%d\n", res);
}
int main() {
scanf("%d", &N);
scanf("%d", &M);
for (int i = 0; i < M; i ++) {
int s, e, c;
scanf("%d %d %d", &s, &e, &c);
edges.push_back(Edge(s, e, c));
}
kruskal();
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgRWRnZSB7CiAgICBpbnQgcywgZSwgY29zdDsKCiAgICBFZGdlKGludCBzLCBpbnQgZSwgaW50IGNvc3QpIDogcyhzKSwgZShlKSwgY29zdChjb3N0KSB7IH0KCiAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IEVkZ2UgJngpIGNvbnN0IHsKICAgICAgICByZXR1cm4gY29zdCA8IHguY29zdDsKICAgIH0KfTsKCmludCBOLCBNOwoKdmVjdG9yPEVkZ2U+IGVkZ2VzOwoKaW50IHBhcmVudFs1MDAwM107CgppbnQgZ2V0X3BhcmVudChpbnQgeCkgewogICAgaWYgKHggPT0gcGFyZW50W3hdKSB7CiAgICAgICAgcmV0dXJuIHg7CiAgICB9CiAgICBwYXJlbnRbeF0gPSBnZXRfcGFyZW50KHBhcmVudFt4XSk7CiAgICByZXR1cm4gcGFyZW50W3hdOwp9Cgp2b2lkIGtydXNrYWwoKSB7CiAgICBzb3J0KGVkZ2VzLmJlZ2luKCksIGVkZ2VzLmVuZCgpKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOOyBpICsrKSB7CiAgICAgICAgcGFyZW50W2ldID0gaTsKICAgIH0KCiAgICBpbnQgcmVzID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTTsgaSArKykgewogICAgICAgIGludCBwYSA9IGdldF9wYXJlbnQoZWRnZXNbaV0ucyk7CiAgICAgICAgaW50IHBiID0gZ2V0X3BhcmVudChlZGdlc1tpXS5lKTsKICAgICAgICBpZiAocGEgPT0gcGIpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHJlcyArPSBlZGdlc1tpXS5jb3N0OwogICAgICAgIHBhcmVudFtwYV0gPSBwYjsKICAgIH0KCiAgICBwcmludGYoIiVkXG4iLCByZXMpOwp9CgppbnQgbWFpbigpIHsKICAgIHNjYW5mKCIlZCIsICZOKTsKICAgIHNjYW5mKCIlZCIsICZNKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE07IGkgKyspIHsKICAgICAgICBpbnQgcywgZSwgYzsKICAgICAgICBzY2FuZigiJWQgJWQgJWQiLCAmcywgJmUsICZjKTsKICAgICAgICBlZGdlcy5wdXNoX2JhY2soRWRnZShzLCBlLCBjKSk7CiAgICB9CgogICAga3J1c2thbCgpOwoKICAgIHJldHVybiAwOwp9