#include<bits/stdc++.h>
using namespace std;
using vi=vector<int>;
using vii=vector<vi>;
int n,ans=-99999999;
vii v;
vi use;
void dfs(int lv,int sum){
if(lv==n){
ans=max(ans,sum);
return;
}
else{
bool canuse[n]={};
for(bool &i:canuse)
i=1;
for(int i=0;i<lv;i++){
if(canuse[i]==-1)
continue;
else{
if(abs(0<=lv-i+use[i])<=n-1)
canuse[abs(lv-i+use[i])]=0;
if(abs(0<=lv-i-use[i])<=n-1)
canuse[abs(lv-i-use[i])]=0;
canuse[use[i]]=0;
}
}
for(int i=0;i<n;i++){
if(canuse[i]){
use[lv]=i;
dfs(lv+1,sum+v[i][lv]);
}
}
use[lv]=-1;
dfs(lv+1,sum);
}
return;
}
int main(){
cin>>n;
use.resize(n);
v.resize(n);
for(vi &i:v)
i.resize(n);
for(vi &i:v)
for(int &j:i)
cin>>j;
dfs(0,0);
cout<<ans<<endl;
return 0;
}