N = int(input()) f = [[int(j) for j in input().split()] for i in range(N)] dp = [-1 for i in range(1 << N)] def dfs(S): if S == (1<>i&1: continue for j in range(i+1,N): if S>>j&1 or i == j: continue if mi1 == - 1 or mi2 == -2 or f[mi1][mi2] < f[i][j]: mi1 = i mi2 = j ret = dfs(S | 1 << mi1 | 1 << mi2) + f[mi1][mi2] dp[S] = ret return ret print(dfs(0))