import heapq

def tree(V, E, edges):
    adj = [[] for _ in range(V)]
    for i in range(E):
        u, v, wt = edges[i]
        adj[u].append((v, wt))
        adj[v].append((u, wt))
        
    pq = []
    visited = [False] * V
    res = 0
    heapq.heappush(pq, (0, 0))
    
    while pq:
        wt, u = heapq.heappop(pq)
        if visited[u]:
            continue
        res += wt
        visited[u] = True
        for v, weight in adj[u]:
            if not visited[v]:
                heapq.heappush(pq, (weight, v))
                
    return res

# Take user input
V = int(input("Enter the number of vertices: "))
E = int(input("Enter the number of edges: "))
edges = []

for i in range(E):
    u, v, wt = map(int, input(f"Enter edge {i + 1} (u v weight): ").split())
    edges.append([u, v, wt])

# Function call and result output
print("Sum of weights of the Minimum Spanning Tree:", tree(V, E, edges))