#include <bits/stdc++.h>
using namespace std;
#define int long long
struct tree
{
int head;
int nxt;
int val;
} a[300005];
int n,m,sum=0;
int fa[100001];
void read(int &a)
{
scanf("%lld",&a);
}
bool cmp(tree x,tree y)
{
return x.val<y.val;
}
int find(int x)
{
return fa[x]==x?x:find(fa[x]);
}
void k()
{
int tot=0;
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++)
{
int fax=find(a[i].head);
int fay=find(a[i].nxt);
if(fax!=fay)
{
fa[fay]=fax;
sum+=a[i].val;
tot++;
}
if(tot==n-1)
{
break;
}
}
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
fa[i]=i;
}
for(int i=1;i<=m;i++)
{
read(a[i].head),read(a[i].nxt),read(a[i].val);
}
k();
cout<<sum;
return 0;
}