#include<bits/stdc++.h>
#define ll long long
#define N 20
using namespace std;
ll read(){
ll x = 0, f = 1; char ch = getchar();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = getchar();}
while(isdigit(ch)) {x = (x << 3) + (x << 1) + ch - 48; ch = getchar();}
return x * f;
}
ll n, m, f[1 << N][N], G[N][N];
ll dfs(ll p, ll s){
if(p == 1 && s == 0) return 0;
if(p == 1 && s != 0) return LONG_LONG_MIN;
if(f[p][s] >= 0) return f[p][s];
ll ans = 0;
for(int i = 1; i < n; i++){
if(p & (1 << i) && i != s)
ans = max(ans, dfs(p - (1 << s), i) + G[i][s]);
}
return f[p][s] = ans;
}
int main(){
for(int i = 0; i < (1 << N); i++)
for(int j = 0; j < N; j++)
f[i][j] = LONG_LONG_MIN;
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
G[i][j] = LONG_LONG_MIN;
n = read(), m = read();
for(int i = 1; i <= m; i++){
ll u = read(), v = read(), w = read();
G[u][v] = w;
if(u == 0) f[1 + (1 << v)][v] = w;
}
ll ans = 0; f[1][0] = 0;
for(ll i = 1; i < (1 << (n - 1)); i++){
ans = max(ans, dfs(i + (1 << (n - 1)), n - 1));
}
printf("%lld\n", ans);
return 0;
}