#include <bits/stdc++.h>
using namespace std;
int dp[1 << 20][20];
int dis[20][20], ans = 0;
int main() {
int n, m;
cin >> n >> m;
memset(dp, -0x3f, sizeof(dp));
for (int i = 1; i <= m; i++) {
int x, y, l;
cin >> x >> y >> l;
dis[x][y] = l;
}
dp[1][0] = 0;
for (int i = 1; i <= (1 << n) - 1; i++) {
for (int j = 0; j < n; j++) {
if (j == n - 1)
ans = max(ans, dp[i][n - 1]);
if (!(i >> j & 1))
continue;
for (int k = 0; k < n; k++) {
if (dis[j][k] && !((i >> k) & 1))
dp[i | 1 << k][k] = max(dp[i | k][k], dp[i][j] + dis[j][k]);
}
}
}
cout << ans;
}