#include using namespace std; #define rep(i, n) for (int i = 0; i < (n); i++) int main() { int N, M; cin >> N >> M; vector>> g(N); rep(i, M) { int a, b, c; cin >> a >> b >> c; a--, b--; g[a].emplace_back(b, c); g[b].emplace_back(a, c); } vector> dp((1 << N), vector(N, -1)); rep(v, N) { dp[1 << v][v] = 0; } rep(s, 1 << N) { rep(v, N) { if (dp[s][v] == -1) { continue; } for (auto [nv, d] : g[v]) { if (s & (1 << nv)) { continue; } int ns = s | (1 << nv); dp[ns][nv] = max(dp[ns][nv], dp[s][v] + d); } } } int ans = 0; rep(i, 1 << N) { ans = max(ans, *max_element(dp[i].begin(), dp[i].end())); } cout << ans << "\n"; }