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 for j in range(n): if j!=start and (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])