N, M = map(int, input().split()) inf = 10**18 G = [[inf] * N for _ in range(N)] for _ in range(M): a, b, c = map(int, input().split()) a -= 1 b -= 1 if G[a][b] > -c: G[a][b] = -c G[b][a] = -c dp = [[inf] * N for _ in range(1 << N)] for i in range(N): dp[1 << i][i] = 0 for bit in range(1 << N): for i in range(N): if (bit >> i) & 1: for j in range(N): if (bit >> j) & 1: continue if G[i][j] < inf: bit_next = bit | (1 << j) dp[bit_next][j] = min(dp[bit_next][j], dp[bit][i] + G[i][j]) ans = inf for i in range(1 << N): ans = min(ans, min(dp[i])) print(-ans)