#include<bits/stdc++.h>
using namespace std;
const int N=505;
int R,C,A,B;
int a[N][N],s[N][N];
int l,r,mid;
bool check(int x){
int a=0,b,p,t;
bool fl;
for(int i=1;i<=R;){
for(int j=1;i+j-1<=R;j++){
b=0,p=1;
fl=false;
for(int k=1;p+k-1<=C;k++){
t=s[i+j-1][p+k-1]+s[i-1][p-1]-s[i-1][p+k-1]-s[i+j-1][p-1];
if(t>=x){
b++,p+=k;
k=1;
if(b==B){
fl=true;
break;
}
}
}
if(fl==true){
a++;
i+=j;
break;
}
if(i+j-1==R)
return false;
}
if(a==A)
return true;
}
return false;
}
int main(){
cin>>R>>C>>A>>B;
for(int i=1;i<=R;i++)
for(int j=1;j<=C;j++){
cin>>a[i][j];
s[i][j]=(s[i-1][j]+s[i][j-1]-s[i-1][j-1])+a[i][j];
}
l=0,r=s[R][C];
while(l<r){
mid=l+r+1>>1;
if(check(mid))
l=mid;
else
r=mid-1;
}
cout<<r;
return 0;
}