n=int(input())
F=[list(map(int,input().split())) for i in range(n)]

DP=[0]*(1<<n)

for i in range(1<<n):
    for j in range(n):
        if i & (1<<j) == 0:
            start=j
            break

    for j in range(start+1,n):
        if i & (1<<j) == 0:
            DP[i|(1<<start)|(1<<j)]=max(DP[i|(1<<start)|(1<<j)],DP[i]+F[start][j])

print(DP[-1])