#include <algorithm>
#include <cstdio>
#include <fstream>
int a[2 + 20][2 + 8200], sol = 1e9, sumLin[2 + 20];
bool selected[2 + 20];
void calc(int n, int m, int c) {
int sums[2 + m];
for (int j = 1; j <= m; j++) {
sums[j] = 0;
for (int i = 1; i <= n; i++)
if (!selected[i])
sums[j] += a[i][j];
}
std::sort(sums + 1, sums + m + 1);
int sum = 0;
for (int i = 1; i <= c; i++)
sum += sums[i];
for (int i = 1; i <= n; i++)
if (selected[i])
sum += sumLin[i];
sol = std::min(sol, sum);
}
void backt(int n, int m, int r, int c, int k, int p) {
if (k > n) {
if (p == r)
calc(n, m, c);
} else
for (int i = 0; i <= 1; i++) {
selected[k] = i;
if (i == 1 && p < r)
backt(n, m, r, c, k + 1, p + 1);
else if (i == 0 && p <= r)
backt(n, m, r, c, k + 1, p);
selected[k] = 0;
}
}
int main() {
freopen("elimin.in", "r", stdin);
freopen("elimin.out", "w", stdout);
int n, m, r, c;
scanf("%d%d%d%d", &n, &m, &r, &c);
bool swapping = false;
int sumAll = 0;
if (m < n)
swapping = true;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (swapping) {
scanf("%d", &a[j][i]);
sumAll += a[j][i];
sumLin[j] += a[j][i];
} else {
scanf("%d", &a[i][j]);
sumAll += a[i][j];
sumLin[i] += a[i][j];
}
if (swapping) {
std::swap(n, m);
std::swap(r, c);
}
backt(n, m, r, c, 1, 0);
printf("%d", sumAll - sol);
return 0;
}