from __future__ import print_function
num_nodes, num_edges = list(map(int,input().split()))

edges = []

for i in range(num_edges):
	node1, node2, cost = list(map(int,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)
