#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using ull = unsigned long long; const ll INF = 1e16; const ll MOD = 1e9 + 7; #define REP(i, n) for(int i = 0; i < n; i++) int main() { ll n, m; cin >> n >> m; vector i1(m), i2(m), s(m); REP(i, m){ cin >> i1[i] >> i2[i] >> s[i]; } ll dp[1 << n]; fill(dp, dp + (1 << n), 0); for(ll i = 1; i < (1 << n); i++){ for(ll j = 0; j < n; j++){ if(i & (1 << j)){ ll sum = 0; for(ll k = 0; k < m; k++){ if(i2[k] == j && (i & (1 << i1[k]))){ sum += s[k]; } } dp[i] = max(dp[i], dp[i ^ (1 << j)] + sum); } } } cout << dp[(1 << n) - 1] << endl; }