#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e5 +5;
long long n,m;
pair<long long,pair<long long, long long>> pr[MaxN];
struct DSU
{
long long lab[MaxN];
void init()
{
for (long long i=1; i<=n; i++)
{
lab[i]=-1;
}
}
long long get_root(long long u)
{
if(lab[u]<0) return u;
return lab[u]=get_root(lab[u]);
}
void unite(long long u , long long v)
{
long long x = get_root(u), y=get_root(v);
if(x==y)
{
return;
}
if(lab[x]>lab[y]) swap(x,y);
lab[x]+=lab[y];
lab[y]=x;
return;
}
bool check(long long u, long long v)
{
return get_root(u)==get_root(v);
}
long long get_size(long long u)
{
return -lab[get_root(u)];
}
};
DSU dsu;
void input()
{
cin >> n >> m;
for (long long i=1; i<=m; i++)
{
cin >> pr[i].second.first >> pr[i].second.second >> pr[i].first;
}
}
void solve()
{
dsu.init();
long long ans=0;
sort (pr+1, pr+m+1);
for (long long i=1; i<=m; i++)
{
long long u = pr[i].second.first;
long long v = pr[i].second.second;
long long w = pr[i].first;
if(!dsu.check(u,v))
{
dsu.unite(u,v);
ans+=w;
}
}
cout << ans;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1heE4gPSAxZTUgKzU7CmxvbmcgbG9uZyBuLG07CnBhaXI8bG9uZyBsb25nLHBhaXI8bG9uZyBsb25nLCBsb25nIGxvbmc+PiBwcltNYXhOXTsKc3RydWN0IERTVQp7CiAgICBsb25nIGxvbmcgbGFiW01heE5dOwogICAgdm9pZCBpbml0KCkKICAgIHsKICAgICAgICBmb3IgKGxvbmcgbG9uZyBpPTE7IGk8PW47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGxhYltpXT0tMTsKICAgICAgICB9CiAgICB9CiAgICBsb25nIGxvbmcgZ2V0X3Jvb3QobG9uZyBsb25nIHUpCiAgICB7CiAgICAgICAgaWYobGFiW3VdPDApIHJldHVybiB1OwogICAgICAgIHJldHVybiBsYWJbdV09Z2V0X3Jvb3QobGFiW3VdKTsKICAgIH0KICAgIHZvaWQgdW5pdGUobG9uZyBsb25nIHUgLCBsb25nIGxvbmcgdikKICAgIHsKICAgICAgICBsb25nIGxvbmcgeCA9IGdldF9yb290KHUpLCB5PWdldF9yb290KHYpOwogICAgICAgIGlmKHg9PXkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmKGxhYlt4XT5sYWJbeV0pIHN3YXAoeCx5KTsKICAgICAgICBsYWJbeF0rPWxhYlt5XTsKICAgICAgICBsYWJbeV09eDsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBib29sIGNoZWNrKGxvbmcgbG9uZyB1LCBsb25nIGxvbmcgdikKICAgIHsKICAgICAgICByZXR1cm4gZ2V0X3Jvb3QodSk9PWdldF9yb290KHYpOwogICAgfQogICAgbG9uZyBsb25nIGdldF9zaXplKGxvbmcgbG9uZyB1KQogICAgewogICAgICAgIHJldHVybiAtbGFiW2dldF9yb290KHUpXTsKICAgIH0KfTsKRFNVIGRzdTsKdm9pZCBpbnB1dCgpCnsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGxvbmcgbG9uZyBpPTE7IGk8PW07IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gcHJbaV0uc2Vjb25kLmZpcnN0ID4+IHByW2ldLnNlY29uZC5zZWNvbmQgPj4gcHJbaV0uZmlyc3Q7CiAgICB9Cn0Kdm9pZCBzb2x2ZSgpCnsKICAgIGRzdS5pbml0KCk7CiAgICBsb25nIGxvbmcgYW5zPTA7CiAgICBzb3J0IChwcisxLCBwcittKzEpOwogICAgZm9yIChsb25nIGxvbmcgaT0xOyBpPD1tOyBpKyspCiAgICB7CiAgICAgICAgbG9uZyBsb25nIHUgPSBwcltpXS5zZWNvbmQuZmlyc3Q7CiAgICAgICAgbG9uZyBsb25nIHYgPSBwcltpXS5zZWNvbmQuc2Vjb25kOwogICAgICAgIGxvbmcgbG9uZyB3ID0gcHJbaV0uZmlyc3Q7CiAgICAgICAgaWYoIWRzdS5jaGVjayh1LHYpKQogICAgICAgIHsKICAgICAgICAgICAgZHN1LnVuaXRlKHUsdik7CiAgICAgICAgICAgIGFucys9dzsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFuczsKfQppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgaW5wdXQoKTsKICAgIHNvbHZlKCk7Cn0=