class Union: def __init__(s, num): s.T = [-1] * num def root(s, x): if s.T[x] < 0: return x t = s.root(s.T[x]) s.T[x] = t return t def merge(s, x, y): an, bn = s.root(x), s.root(y) if an == bn: return False am, bm = -s.T[an], -s.T[bn] if am < bm: an, bn = bn, an s.T[an] += s.T[bn] s.T[bn] = an return True def size(s, x): n = s.root(x) return -s.T[n] def same(s, x, y): return s.root(x) == s.root(y) def print(s): #デバッグ用 print(*s.T) ans = [] for i in range(len(s.T)): ans.append(s.root(i)) print(*ans) N, M = list(map(int, input().split())) abc = [list(map(int, input().split())) for _ in range(M)] uni = Union(N) abc.sort(key = lambda x: x[2], reverse=True) ans = 0 for a, b, c in abc: a -= 1 b -= 1 if uni.merge(a, b): ans += 2 * c print(ans)