#include<bits/stdc++.h>
using namespace std;
int n,m,f[5001];
struct node
{
int pre;
int next;
int v;
}a[200001];
bool cmp(node x,node y)
{
return x.v<y.v;
}
int find(int x)
{
if(f[x]!=x) f[x]=find(f[x]);
return f[x];
}
int hebin(int x,int y)
{
x=find(x);
y=find(y);
f[y]=x;
}
main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
f[i]=i;
for(int i=1;i<=m;i++)
cin>>a[i].pre>>a[i].next>>a[i].v;
sort(a+1,a+m+1,cmp);
int k=0,tot=0;
for(int i=1;i<=m;i++)
{
a[i].pre=find(a[i].pre);
a[i].next=find(a[i].next);
if(a[i].next!=a[i].pre)
{
hebin(a[i].pre,a[i].next);
k++;
tot+=a[i].v;
if(k==n-1) break;
}
}
cout<<tot;
return 0;
}