#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll MAXN = 200005;
#define fi first
#define se second
#define pr pair<int,pair<int,int>>


vector <vector<pair<int,int>>> A(MAXN);
vector <pr> vet;
priority_queue<pr,vector<pr>,greater<pr>> Q;

void prim(int u,int n){
	vector <bool> ktra(n+1,true);
    ll ans=0;
    for(auto [c,t]:A[u]) Q.push({t,{u,c}});
    ktra[u]=false;
    while(!Q.empty()){
        auto canh=Q.top(); Q.pop();
        ll trongso=canh.fi, dau=canh.se.fi, cuoi=canh.se.se;
        if(!ktra[cuoi]) continue;
        ans+=trongso;   
        //cout << "(" <<dau <<","<<cuoi<<")" << " = " << trongso << "\n";
        //vet.push_back({trongso,{dau,cuoi}});
        ktra[cuoi]=false;
        for(auto it:A[cuoi]){
            if(ktra[it.fi]){
                Q.push({it.se,{cuoi,it.fi}});
            }
        }

    }
    cout << ans <<"\n";
}

int main(){
    //ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    ll n,m; cin >> n >> m;
    for(ll i=1 ; i<=m ; i++){
        ll z,x,y; cin >> x >> y >> z;
        A[x].push_back({y,z});
        A[y].push_back({x,z});
    }
    prim(1,n);
    /*
    for(ll i=1 ; i<=n ; i++){
        cout << i << " : ";
        for(auto [x,y]:A[i]) cout << x << "-" << y << " ";
        cout << endl;
    }
    */
}
