#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int n, m, p[20][20];
vector < pair <int, int> > v[20];
pair <int, int> dp[300000][20];
int main()
{
fin >> n >> m;
for(int i = 1; i <= m; i++)
{
int a, b, c;
fin >> a >> b >> c;
v[b].push_back(make_pair(a, c));
p[a][b] = c;
}
for(int i = 1; i < (1<<n); i++)
for(int j = 0; j < n; j++)
dp[i][j].f = (1<<30);
for(int i = 0; i < n; i++)
dp[(1<<i)][i].second = i, dp[(1<<i)][i].f = 0;;
for(int i = 1; i < (1<<n)-1; i++)
for(int j = 0; j < n; j++)
if((i&(1<<j)) == 0)
{
for(int k = 0; k < v[j].size(); k++)
{
int nod = v[j][k].f;
int cost = v[j][k].s;
if((i&(1<<nod)))
{
if(dp[i][nod].f+cost < dp[(i|(1<<j))][j].f)
{
dp[(i|(1<<j))][j].f = dp[i][nod].f+cost;
dp[(i|(1<<j))][j].s = dp[i][nod].s;
}
}
}
}
int ans = (1<<30);
for(int i = 0; i < v[0].size(); i++)
ans = min(ans, dp[(1<<n)-1][v[0][i].f].f + p[v[0][i].f][0]) ;
if(ans != (1<<30))
fout << ans;
else
fout <<"Nu exista solutie";
return 0;
}