#include <stdio.h>
#include <stdbool.h>
#include <limits.h>


#define max 100

int minkey( int key[], bool mstset[], int n){
    int min = INT_MAX;
    int min_index = -1;
    
    for (int v=0; v<n; v++){
        if(!mstset[v] && key[v]<min){
            min=key[v];
            
            min_index=v;
        }
    }
    return min_index;
}

int main(){
    int n, m;
    scanf("%d %d", &n, &m);
    if(n == 0){
        printf("Invslid input");
        return 0;
    }
    
    int graph[max][max]={0};
    
    for(int i=0; i<m; i++){
        int u, v, w;
        scanf("%d %d %d", &u, &v, &w);
        graph[u][v]=w;
        graph[v][u]=w;
    }
    
    int key[max];
    
    bool mstset[max];
    for(int i=0; i<n; i++){
        key[i]=INT_MAX;
        mstset[i]=false;
    }
    key[0]=0;
    int mstweight=0;
    
    for(int count=0; count<n; count++){
        int u=minkey(key, mstset, n);
        mstset[u]=true;
        mstweight +=keey[u];
        
        for(int v=0; v<n; v++){
            if(graph[u][v]<key[v]){
                key[v]=graph[u][v];
            }
        }
    }
    print ("%d", mstweight);
    return 0;
}