#include<iostream>
#include<algorithm>
#include<cstring>
#define N 10005
#define INF 0x3f3f3f3f
using namespace std;
int cost[N][N];
int mincost[N];
bool used[N];
int V, E;
long Prim() {
memset(mincost, 0x3f, sizeof(mincost));
memset(used, 0, sizeof(used));
mincost[0] = 0;
long res = 0;
while (1) {
int v = -1;
for (int u = 0; u < V; u++) {
if (!used[u] && (v == -1 || mincost[u] < mincost[v]))v = u;
}
if (v == -1)break;
used[v] = true;
res += mincost[v];
for (int u = 0; u < V; u++) {
mincost[u] = min(mincost[u], cost[v][u]);
}
}
return res;
}
int main() {
int v1, v2, w;
cin >> V >> E;
memset(cost, 0x3f, sizeof(cost));
for (int i = 0; i < E; i++) {
cin >> v1 >> v2 >> w;
cost[v1-1][v2-1] = w;
cost[v2-1][v1-1] = w;
}
cout << Prim() << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8Y3N0cmluZz4KI2RlZmluZSBOIDEwMDA1CiNkZWZpbmUgSU5GIDB4M2YzZjNmM2YKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGNvc3RbTl1bTl07CmludCBtaW5jb3N0W05dOwpib29sIHVzZWRbTl07CmludCBWLCBFOwpsb25nIFByaW0oKSB7CiAgICBtZW1zZXQobWluY29zdCwgMHgzZiwgc2l6ZW9mKG1pbmNvc3QpKTsKICAgIG1lbXNldCh1c2VkLCAwLCBzaXplb2YodXNlZCkpOwogICAgbWluY29zdFswXSA9IDA7CiAgICBsb25nIHJlcyA9IDA7CiAgICB3aGlsZSAoMSkgewogICAgICAgIGludCB2ID0gLTE7CiAgICAgICAgZm9yIChpbnQgdSA9IDA7IHUgPCBWOyB1KyspIHsKICAgICAgICAgICAgaWYgKCF1c2VkW3VdICYmICh2ID09IC0xIHx8IG1pbmNvc3RbdV0gPCBtaW5jb3N0W3ZdKSl2ID0gdTsKICAgICAgICB9CiAgICAgICAgaWYgKHYgPT0gLTEpYnJlYWs7CiAgICAgICAgdXNlZFt2XSA9IHRydWU7CiAgICAgICAgcmVzICs9IG1pbmNvc3Rbdl07CiAgICAgICAgZm9yIChpbnQgdSA9IDA7IHUgPCBWOyB1KyspIHsKICAgICAgICAgICAgbWluY29zdFt1XSA9IG1pbihtaW5jb3N0W3VdLCBjb3N0W3ZdW3VdKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CmludCBtYWluKCkgewogICAgaW50IHYxLCB2MiwgdzsKICAgIGNpbiA+PiBWID4+IEU7CiAgICBtZW1zZXQoY29zdCwgMHgzZiwgc2l6ZW9mKGNvc3QpKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgRTsgaSsrKSB7CiAgICAgICAgY2luID4+IHYxID4+IHYyID4+IHc7CiAgICAgICAgY29zdFt2MS0xXVt2Mi0xXSA9IHc7CiAgICAgICAgY29zdFt2Mi0xXVt2MS0xXSA9IHc7CiAgICB9CiAgICBjb3V0IDw8IFByaW0oKSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0=