#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
constexpr int N=1e3+10;
constexpr int mod=1e9+7;
int f[N][N];
int v[N][N];
void solve()
{
int n,m,a,b;
int o=0;
cin >> n >> m >> a >> b;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin >> v[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
f[i][j]=v[i][j]+f[i-1][j]+f[i][j-1]-f[i-1][j-1];
}
}
int l=0;
int r=1e9;
int num=a*b;
int mid;
while(l<=r)
{
int ans=0;
int numl=0;
int numr=0;
int tmpl=0;
int tmpr=0;
mid=l+((r-l)>>1);
for(int i=1;i<=n;i++)
{
if(numl!=tmpl)
{
numr=0;
tmpr=0;
numl=tmpl;
}
for(int j=1;j<=m;j++)
{
numr=tmpr;
if(f[i][j]-f[numl][j]-f[i][numr]+f[numl][numr]>=mid)
{
ans++;
tmpl=i;
tmpr=j;
}
}
}
if(ans>=num)
{
l=mid+1;
}else r=mid-1;
}
// cout << mid << endl;
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=m;j++)
// {
// cout << f[i][j] << ' ';
// }
// cout << endl;
// }
// cout << num/(a*b) << endl;
cout << r << endl;
}
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
// int o;
// cin >> o;
// while(o--)
solve();
return 0;
}
//
//⠀⠀⠀ ⠀⢸⣿⣿⣿⠀⣼⣿⣿⣦⡀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀ ⠀⢸⣿⣿⡟⢰⣿⣿⣿⠟⠁
//⠀⠀⠀⠀⠀⠀⠀⢰⣿⠿⢿⣦⣀⠀⠘⠛⠛⠃⠸⠿⠟⣫⣴⣶⣾⡆
//⠀⠀⠀⠀⠀⠀⠀⠸⣿⡀⠀⠉⢿⣦⡀⠀⠀⠀⠀⠀⠀ ⠛⠿⠿⣿⠃
//⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⠀⠀⠹⣿⣶⡾⠛⠛⢷⣦⣄⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣧⠀⠀⠈⠉⣀⡀⠀ ⠀⠙⢿⡇
//⠀⠀⠀⠀⠀⠀⢀⣠⣴⡿⠟⠋⠀⠀⢠⣾⠟⠃⠀⠀⠀⢸⣿⡆
//⠀⠀⠀⢀⣠⣶⡿⠛⠉⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⠀⠀⢸⣿⠇
//⢀⣠⣾⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⢀⣼⣧⣀⠀⠀⠀⢀⣼⠇
//⠈⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠙⠛⠛⠛⠛⠛⠁
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣾⡿⠋⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⢾⠿⠋⠀
//