from __future__ import print_function num_nodes, num_edges = list(map(int,raw_input().split())) edges = [] for i in range(num_edges): node1, node2, cost = list(map(int,raw_input().split())) edges.append((i,node1,node2,cost)) edges = sorted(edges, key=lambda edge: edge[3]) parent = [i for i in 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)