import sys
from collections import defaultdict
import heapq

input = lambda: sys.stdin.readline().rstrip()

v, e = map(int, input().split())

graph = defaultdict(list)

for _ in range(e):
    a, b, c = map(int, input().split())

    # 가중치로 정렬되도록 가중치를 가장 앞에 놓기
    graph[a].append((c, a, b))
    graph[b].append((c, b, a))

# 프림 알고리듬(Prim’s algorithm)
# https://deep-learning-study.tistory.com/595

# 아무 노드나 골라 잡아서 트리 생성(여기서는 1번 노드)
visited = {1}
candidates = graph[1]
heapq.heapify(candidates)
# mst = []
total_weight = 0

while candidates:
    # 가중치가 가장 작은 간선
    c, a, b = heapq.heappop(candidates)

    # 해당 간선이 MST에 포함되는 경우
    if b not in visited:
        visited.add(b)
        # mst.append((a, b))
        total_weight += c

        # 방문하지 않은 인접 간선 추가
        for edge in graph[b]:
            if edge[2] not in visited:
                heapq.heappush(candidates, edge)

# print(mst)
print(total_weight)
