#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m;
struct node{
int s,t,w;
bool used;
bool operator <(const node nxt)const{
return w<nxt.w;
}
}e[200005];
int f[5005];
int find(int now){ return f[now]!=0?f[now]=find(f[now]):now; }
int kruscal(){
sort(e,e+m);
memset(f,0,sizeof f);
int u,v,sum=0;
for(int i=0;i<m;i++){
u=find(e[i].s),v=find(e[i].t);
if(u!=v){
f[v]=u;
e[i].used=1;
sum+=e[i].w;
}
}
return sum;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++) scanf("%d%d%d",&e[i].s,&e[i].t,&e[i].w);
printf("%d",kruscal());
}