#include <iostream>
#include <stdio.h>
using namespace std;
int v[8001];
int sumal[8001];
int sumac[8001];
int linii[8001];
int n, m, r, c;
void backtracking(int ind, int poz, int rr, int cc, int scur, int &sf){
if(poz>n || poz>m)
return;
if(rr<=r || r==0){
if(r==0){
r=-1;
backtracking(1, 1, rr, 1, scur, sf);
return;
}
for(int i=poz; i<=n; ++i){
linii[ind]=i;
if(rr>=r)
backtracking(1, 1, rr+1, 1, scur-sumal[i], sf);
else backtracking(ind+1, i+1, rr+1, cc, scur-sumal[i], sf);
}
}
else{
if(c==0){
if(scur>sf)
sf=scur;
return;
}
int aux;
for(int i=poz; i<=m; ++i){
aux=0;
for(int j=1; j<=r; ++j)
aux=aux+v[(linii[j]-1)*m+i];
scur=scur-sumac[i]+aux;
if(cc>=c){
if(scur>sf){
sf=scur;
}
}
else if(cc<c)
backtracking(ind+1, i+1, rr, cc+1, scur, sf);
scur=scur+sumac[i]-aux;
}
}
}
int main()
{
FILE *fin=fopen("elimin.in", "r");
FILE *fout=fopen("elimin.out", "w");
int sf=0, tot=0;
fscanf(fin, "%d%d%d%d", &n, &m, &r, &c);
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
fscanf(fin, "%d", &v[(i-1)*m+j]);
sumal[i]+=v[(i-1)*m+j];
sumac[j]+=v[(i-1)*m+j];
tot+=v[(i-1)*m+j];
}
}
if(r==0 && c==0)
sf=tot;
else backtracking(1, 1, 1, 0, tot, sf);
fprintf(fout, "%d", sf);
return 0;
}