def solve(): n = int(input()) A = [] for i in range(n): A.append(list(map(int, input().split()))) dp = [-1] * (1 << n) dp[0] = 0 for i in range(1 << n): if dp[i] < 0: continue for j in range(n): if i & (1 << j): continue for k in range(j + 1, n): if i & (1 << k): continue t = i | (1 << j) | (1 << k) dp[t] = max(dp[t], dp[i] + A[j][k]) return dp[-1] print(solve())