#include<bits/stdc++.h>
using namespace std;
#define int long long
int dp[25][(1<<20)+5],p[25][25],q[25][25],num[(1<<20)+5];
signed main(){
int n;
scanf("%lld",&n);
int x=1<<n;
for(int i=0;i<x;++i){
int sum=0,qaz=i;
while(qaz){
if(qaz&1) ++sum;
qaz>>=1;
}
num[i]=sum;
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
scanf("%lld",&p[i][j]);
}
}for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
scanf("%lld",&q[i][j]);
}
}for(int i=1;i<=n;++i){
for(int j=1;j<(1<<n);++j){
if(i==num[j]){
for(int d=1;d<=n;++d){
if(j&(1<<(d-1))) dp[i][j]=max(dp[i][j],dp[i-1][j^(1<<d-1)]+p[i][d]*q[i][d]);
}
}
}
}cout<<dp[n][(1<<n)-1]<<endl;
return 0;
}