func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 17;   int n, m, x, y, z, inf;   int bin[N], d[N][N], du[N], f[1 << N], q[N];   int main() {     for (register int i = 1; i <= 16; ++i) bin[i] = 1 << (i - 1);     int sum = 0;     scanf( %d , &n);     scanf( %d , &m);     memset(d, 60, sizeof(d));     inf = d[0][0];     for (register int i = 1; i <= m; ++i) {       scanf( %d%d%d , &x, &y, &z);       sum += z;       du[x]++;       du[y]++;       d[x][y] = d[y][x] = min(d[x][y], z);     }     for (register int k = 1; k <= n; ++k)       for (register int i = 1; i <= n; ++i)         for (register int j = 1; j <= n; ++j)           d[i][j] = min(d[i][j], d[i][k] + d[k][j]);     for (register int i = 2; i <= n; ++i)       if (du[i] && d[1][i] == inf) {         puts( -1 );         return 0;       }     int tot = 0;     for (register int i = 1; i <= n; ++i)       if (du[i] & 1) q[++tot] = i;     int max_statue = bin[tot + 1] - 1;     memset(f, 60, sizeof(f));     f[0] = 0;     for (register int p = 0; p < max_statue; ++p) {       for (register int i = 1; i <= tot; ++i)         if (!(bin[i] & p)) {           for (register int j = i + 1; j <= tot; ++j)             if (!(bin[j] & p))               f[p | bin[i] | bin[j]] =                   min(f[p | bin[i] | bin[j]], f[p] + d[q[i]][q[j]]);           break;         }     }     sum += f[max_statue];     printf( %d n , sum);     return 0;   }   