#include #include #include using namespace std; int main(){ long long n,k;cin>>n>>k; int b = 0; for(int i = 0; 2*n > i; i++){ for(int j = 0; 2*n > j; j++){ char c;cin>>c; if(c == '#')b++; } } if(b == 0){ cout << k << endl; return 0; } vector> A(2*n,vector(2*n)); vector B; for(int i = 0; 2*n > i; i++){ for(int j = 0; 2*n > j; j++){ cin>>A[i][j]; B.push_back(A[i][j]); } } sort(B.begin(),B.end(),greater()); long long ans = 0; for(int i = 0; b > i; i++){ ans += B[i]; } if(b%2 == 0){ long long tmp = k; vector C; for(int i = 0; 2*n > i; i++){ for(int j = 0; n > j; j++){ C.push_back(A[i][j]+A[i][2*n-j-1]); } } sort(C.begin(),C.end(),greater()); for(int i = 0; b/2 > i; i++){ tmp += C[i]; } ans = max(ans,tmp); } cout << ans << endl; }