#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, p, q, a[24][24], s[24][24], sum[24], f[24];
int l, r, mid, flag, num, res, ans = 1e18;
bool check(int x)
{
memset(sum, 0, sizeof sum);
num = 0;
for (int i = 1; i <= m; i++)
{
flag = 0;
for (int j = 1; j <= p; j++)
{
if (s[i][f[j]] - s[i][f[j - 1]] > x) return 0;
sum[j] += s[i][f[j]] - s[i][f[j - 1]];
if (sum[j] > x) flag = 1;
}
if (flag || i == m)
{
if (++num > q) return 0;
for (int j = 1; j <= p; j++)
sum[j] = s[i][f[j]] - s[i][f[j - 1]];
}
}
return 1;
}
void solve()
{
l = 0, r = 1e18, res = 1e18;
while (l <= r)
{
mid = (l + r) >> 1;
if (check(mid)) res = mid, r = mid - 1;
else l = mid + 1;
}
ans = min(ans, res);
}
void dfs(int x, int k)
{
if (x == p) {f[x] = n; solve(); return;}
for (int i = k + 1; i < n; i++)
{
f[x] = i;
dfs(x + 1, i);
}
}
signed main()
{
cin >> n >> m >> p >> q;
p++, q++;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
cin >> a[i][j];
s[j][i] = s[j][i - 1] + a[i][j];
}
dfs(1, 0);
cout << ans;
return 0;
}