from __future__ import print_function if __name__ == "__main__": num_nodes, num_edges = list(map(int, input().strip().split())) edges = [] for i in range(num_edges): node1, node2, cost = list(map(int, input().strip().split())) edges.append((i,node1,node2,cost)) edges = sorted(edges, key=lambda edge: edge[3]) parent = list(range(num_nodes)) def find_parent(i): if i != parent[i]: parent[i] = find_parent(parent[i]) return parent[i] minimum_spanning_tree_cost = 0 minimum_spanning_tree = [] for edge in edges: parent_a = find_parent(edge[1]) parent_b = find_parent(edge[2]) if parent_a != parent_b: minimum_spanning_tree_cost += edge[3] minimum_spanning_tree.append(edge) parent[parent_a] = parent_b print(minimum_spanning_tree_cost) for edge in minimum_spanning_tree: print(edge)