#yuki-1344 import heapq N, M = map(int, input().split()) Edge = set() for _ in range(M): s, t, d = map(int, input().split()) s -= 1 t -= 1 Edge.add((s, t, d)) # O(EV) def bellman_ford(s): path = [float('inf')]*N # 各頂点への最小コスト path[s] = 0 # 自身への距離は0 for i in range(N): update = False # 更新が行われたか for s, t, d in Edge: if path[t] > path[s] + d: path[t] = path[s] + d update = True if not update: break # 負閉路が存在 if i == N - 1: return -1 return path for i in range(N): path = bellman_ford(i) for j in range(N): if path[j] == float('inf'): path[j] = 0 print(sum(path))