N = int(input()) f = [[int(j) for j in input().split()] for i in range(N)] dp = [-1 for i in range(1 << N)] dp[0] = 0 for i in range(1 << N): if dp[i] < 0: continue index = -1 for j in range(N): if not i>>j&1: index = j break if index == -1: continue for k in range(N): if index == k or i>>k&1: continue dp[i | 1 << index | 1 << k] = max(dp[i | 1 << index | 1 << k],dp[i] + f[index][k]) print(dp[(1 << N) - 1])