#include <cstdio>
const int INF = 100000;
int N, M;
int data[5003][5003];
int table[5003];
bool check[5003];
int process() {
int ret = 0;
for (int i = 1; i <= N; i ++) {
table[i] = INF;
}
table[1] = 0;
for (int i = 1; i <= N; i ++) {
int k = 0;
for (int j = 1; j <= N; j ++) {
if (check[j]) {
continue;
}
if (k == 0 || table[k] > table[j]) {
k = j;
}
}
check[k] = true;
ret += table[k];
for (int j = 1; j <= N; j ++) {
if (data[k][j] != 0 && table[j] > data[k][j]) {
table[j] = data[k][j];
}
}
}
return ret;
}
int main() {
scanf("%d", &N);
scanf("%d", &M);
for (int i = 0; i < M; i ++) {
int s, e, cost;
scanf("%d %d %d", &s, &e, &cost);
if (data[s][e] == 0 || data[s][e] > cost) {
data[s][e] = data[e][s] = cost;
}
}
printf("%d\n", process());
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KCmNvbnN0IGludCBJTkYgPSAxMDAwMDA7CgppbnQgTiwgTTsKCmludCBkYXRhWzUwMDNdWzUwMDNdOwoKaW50IHRhYmxlWzUwMDNdOwoKYm9vbCBjaGVja1s1MDAzXTsKCmludCBwcm9jZXNzKCkgewogICAgaW50IHJldCA9IDA7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTjsgaSArKykgewogICAgICAgIHRhYmxlW2ldID0gSU5GOwogICAgfQogICAgdGFibGVbMV0gPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkgKyspIHsKICAgICAgICBpbnQgayA9IDA7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gTjsgaiArKykgewogICAgICAgICAgICBpZiAoY2hlY2tbal0pIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChrID09IDAgfHwgdGFibGVba10gPiB0YWJsZVtqXSkgewogICAgICAgICAgICAgICAgayA9IGo7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNoZWNrW2tdID0gdHJ1ZTsKICAgICAgICByZXQgKz0gdGFibGVba107CgogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IE47IGogKyspIHsKICAgICAgICAgICAgaWYgKGRhdGFba11bal0gIT0gMCAmJiB0YWJsZVtqXSA+IGRhdGFba11bal0pIHsKICAgICAgICAgICAgICAgIHRhYmxlW2pdID0gZGF0YVtrXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpIHsKICAgIHNjYW5mKCIlZCIsICZOKTsKICAgIHNjYW5mKCIlZCIsICZNKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE07IGkgKyspIHsKICAgICAgICBpbnQgcywgZSwgY29zdDsKICAgICAgICBzY2FuZigiJWQgJWQgJWQiLCAmcywgJmUsICZjb3N0KTsKICAgICAgICBpZiAoZGF0YVtzXVtlXSA9PSAwIHx8IGRhdGFbc11bZV0gPiBjb3N0KSB7CiAgICAgICAgICAgIGRhdGFbc11bZV0gPSBkYXRhW2VdW3NdID0gY29zdDsKICAgICAgICB9CiAgICB9CgogICAgcHJpbnRmKCIlZFxuIiwgcHJvY2VzcygpKTsKCiAgICByZXR1cm4gMDsKfQ==