#pragma GCC optimize("Ofast") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef unsigned long long ull; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); ll myRand(ll B) { return (ull)rng() % B; } inline double time() { return static_cast(chrono::duration_cast(chrono::steady_clock::now().time_since_epoch()).count()) * 1e-9; } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin >> n; ll K; cin >> K; vector s(2*n); int cnt = 0; for(int i=0;i<2*n;i++){ cin >> s[i]; for(char c:s[i]){ if(c == '#') cnt++; } } vector v,vv; vector> c(2*n,vector(2*n)); for(int i=0;i<2*n;i++){ for(int j=0;j<2*n;j++){ cin >> c[i][j]; v.push_back(c[i][j]); if(j >= n){ vv.push_back(c[i][j]+c[i][2*n-1-j]); } } } ll res = 0; sort(v.rbegin(), v.rend()); for(int i=0;i