#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
struct e {
	int v1, v2, val;
};
 
vector<e> arr;
 
vector<int> p;
 
bool asd(e p1, e p2) {
	return p1.val < p2.val;
}
 
int find_p(int x) {
	if (p[x] == x) {
		return x;
	}
	else {
		return p[x] = find_p(p[x]);
	}
}
 
int main() {
	int i, j;
	int n, m;
	cin >> n >> m;
 
	arr.resize(m + 1);
	p.resize(n + 1);
 
	for (i = 1; i <= m; i++) {
		int a, b, c;
		cin >> a >> b >> c;		
		arr[i].v1 = a;
		arr[i].v2 = b;
		arr[i].val = c;
	}
 
	for (i = 1; i <= n; i++) {
		p[i] = i;
	}
 
	sort(arr.begin() + 1, arr.end(), asd);
 
	int eg = 0;
	long long sum = 0;
 
	for (i = 1; i <= m; i++) {
		int d1 = find_p(arr[i].v1);
		int d2 = find_p(arr[i].v2);
		if (d1 != d2) {
			p[d2] = d1;
			sum += arr[i].val;
			if (++eg == n - 1) break;
		}		
	}
 
	cout << sum << endl;	
	return 0;
}