#include <iostream>
#include <cstdio>
#include <vector>
#include <memory.h>
#define int long long
using namespace std;
int a[16][16];
int cont[1 << 16];
int dp[1 << 16];
int popcount[1 << 16];
int n;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cin >> a[i][j];
}
}
for(int i = 1; i < (1 << n); i++){
if(i & 1) popcount[i] = popcount[i >> 1] + 1;
else popcount[i] = popcount[i >> 1];
}
for(int i = 0; i < (1 << n); i++){
for(int j = 0; j < n; j++){
if(~i >> j & 1) continue;
for(int k = 0; k < j; k++){
if(~i >> k & 1) continue;
cont[i] += a[j][k];
}
}
}
memset(dp, -64, sizeof(dp));
int ans = 0;
dp[0] = 0;
for(int i = 1; i < (1 << n); i++){
for(int j = 0; j < (1 << popcount[i]); j++){
int tmp = j, val = 0;
for(int k = 0; k < n; k++){
if(i >> k & 1){
val |= ((tmp & 1) << k);
tmp >>= 1;
}
}
dp[i] = max(dp[i], dp[val] + cont[i ^ val]);
}
ans = max(ans, dp[i]);
}
cout << ans;
return 0;
}