import sys data = sys.stdin.read().split() n, m = int(data[0]), int(data[1]) edges = [] idx = 2 for i in range(m): edges.append([int(data[idx+2]), int(data[idx]), int(data[idx+1]), i]) idx += 3 edges.sort() def find(i, p): if p[i] == i: return i p[i] = find(p[i], p) return p[i] p = list(range(n + 1)) s1 = 0 mst_edges = [] for j in range(m): w, u, v, eid = edges[j] ru, rv = find(u, p), find(v, p) if ru != rv: p[ru] = rv s1 += w mst_edges.append(j) s2 = float('inf') for i in mst_edges: p = list(range(n + 1)) w_tot = 0 cnt = 0 for j in range(m): if j == i: continue w, u, v, eid = edges[j] ru, rv = find(u, p), find(v, p) if ru != rv: p[ru] = rv w_tot += w cnt += 1 if cnt == n - 1 and w_tot < s2: s2 = w_tot print(s1, s2)