#include<cstdio>#include<algorithm>usingnamespace std;typedefstruct{int a, b, w;} Edgenode;
vector<Edgenode> E;
vector<int> UFS;intFind(int a ){while( a != UFS[a])
a = UFS[a];return a;}voidUnion(int a,int b ){ UFS[a]= b;}intcmp( Edgenode a, Edgenode b ){return a.w < b.w;}intmain(){int N, M, a, b, w, sumW =0;
Edgenode temp;scanf("%d %d",&N,&M);for(int i =0; i < N;++i )
UFS.push_back(i);for(int i =0; i < M;++i ){scanf("%d %d %d",&a,&b,&w);
temp ={a, b, w};
E.push_back(temp);}sort( E.begin(), E.end(), cmp );for(int i =0; i < E.size();++i ){
a =Find( E[i].a );
b =Find( E[i].b );if( a != b ){Union( a, b );
sumW += E[i].w;}}printf("%d", sumW);}