#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+5;
const int mod = 1e9 + 7;
const int oo = 1e18+5;
typedef pair<int, int> ii;
typedef pair<int, pair<int, int>> iii;
#define fi first
#define se second
#define read(_a, n) for(int i = 1; i <= n; i++) cin >> _a[i]
#define For(i, _a, _b) for(int i = _a; i <= _b; i++)
#define fastIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define File(_x,_y) if (fopen(_x, "r")) freopen(_x, "r", stdin)//,freopen(_y, "w", stdout)
#define file "main"
#define bit(x, i) ((x >> i) & 1)
#define bat(x, i) (x (1 << i))
int n, m, c, res, cnt;
bool check[maxn];
vector<ii> adj[maxn];
iii e[maxn];
void dfs(int u)
{
check[u] = 1;
for(int i = 0; i < adj[u].size(); i++)
{
int v = adj[u][i].fi;
if(!check[v]) dfs(v);
}
}
int32_t main()
{
fastIO;
File(file ".inp", file ".out");
cin >> n >> m;
for(int i = 1;i <= m; i++)
{
cin >> e[i].se.fi >> e[i].se.se >> e[i].fi;
adj[e[i].se.fi].push_back({e[i].se.se , e[i].fi});
adj[e[i].se.se].push_back({e[i].se.fi , e[i].fi});
}
for(int i = 1;i <= n; i++)
if(!check[i]) dfs(i), cnt++;
sort(e+1, e+m+1);
c =cnt;
for(int i = 1; i<= m;i++)
{
if(c==1)break;
res += e[i].fi;
c--;
}
cout << res;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtYXhuID0gMWU2KzU7CmNvbnN0IGludCBtb2QgPSAxZTkgKyA3Owpjb25zdCBpbnQgb28gPSAxZTE4KzU7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7CnR5cGVkZWYgcGFpcjxpbnQsIHBhaXI8aW50LCBpbnQ+PiBpaWk7CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSByZWFkKF9hLCBuKSBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IF9hW2ldCiNkZWZpbmUgRm9yKGksIF9hLCBfYikgZm9yKGludCBpID0gX2E7IGkgPD0gX2I7IGkrKykKI2RlZmluZSBmYXN0SU8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIEZpbGUoX3gsX3kpIGlmIChmb3BlbihfeCwgInIiKSkgZnJlb3BlbihfeCwgInIiLCBzdGRpbikvLyxmcmVvcGVuKF95LCAidyIsIHN0ZG91dCkKI2RlZmluZSBmaWxlICJtYWluIgojZGVmaW5lIGJpdCh4LCBpKSAoKHggPj4gaSkgJiAxKQojZGVmaW5lIGJhdCh4LCBpKSAoeCAgKDEgPDwgaSkpCgppbnQgbiwgbSwgYywgcmVzLCBjbnQ7CmJvb2wgY2hlY2tbbWF4bl07CnZlY3RvcjxpaT4gYWRqW21heG5dOwppaWkgZVttYXhuXTsKCnZvaWQgZGZzKGludCB1KQp7CiAgICBjaGVja1t1XSA9IDE7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgYWRqW3VdLnNpemUoKTsgaSsrKQogICAgewogICAgICAgIGludCB2ID0gYWRqW3VdW2ldLmZpOwogICAgICAgIGlmKCFjaGVja1t2XSkgZGZzKHYpOwogICAgfQp9CgppbnQzMl90IG1haW4oKQp7CiAgICBmYXN0SU87CiAgICBGaWxlKGZpbGUgIi5pbnAiLCBmaWxlICIub3V0Iik7CgogICAgY2luID4+IG4gPj4gbTsKICAgIGZvcihpbnQgaSA9IDE7aSA8PSBtOyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IGVbaV0uc2UuZmkgPj4gZVtpXS5zZS5zZSA+PiBlW2ldLmZpOwogICAgICAgIGFkaltlW2ldLnNlLmZpXS5wdXNoX2JhY2soe2VbaV0uc2Uuc2UgLCBlW2ldLmZpfSk7CiAgICAgICAgYWRqW2VbaV0uc2Uuc2VdLnB1c2hfYmFjayh7ZVtpXS5zZS5maSAsIGVbaV0uZml9KTsKICAgIH0KICAgIGZvcihpbnQgaSA9IDE7aSA8PSBuOyBpKyspCiAgICBpZighY2hlY2tbaV0pIGRmcyhpKSwgY250Kys7CiAgICBzb3J0KGUrMSwgZSttKzEpOwogICAgYyA9Y250OwogICAgZm9yKGludCBpID0gMTsgaTw9IG07aSsrKQogICAgewogICAgICAgICBpZihjPT0xKWJyZWFrOwogICAgICAgIHJlcyArPSBlW2ldLmZpOwogICAgICAgIGMtLTsKICAgIH0KICAgIGNvdXQgPDwgcmVzOwp9Cg==