#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
ll father[maxn];
ll n,ans,point,m;
struct Node{
int u,v,w;
bool operator<(const Node other)const{
return this->w<other.w;
}
}node[maxn];
ll find(ll x){
if(x==father[x]) return x;
return father[x]=find(father[x]);
}
void f(){
sort(node,node+m);
for (int i=0;i<m;i++){
int uu=find(node[i].u);
int vv=find(node[i].v);
if(uu==vv) continue;
else{
father[uu]=vv;
ans+=node[i].w;
point++;
if(point==n-1) break;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<=n;i++) father[i]=i;
for(int i=0;i<m;i++) cin>>node[i].u>>node[i].v>>node[i].w;
ans=0,point=0;
f();
cout<<ans<<endl;
if(point!=n-1) cout<<"orz"<<endl;
return 0;
}