/*
TASK: tre
LANG: C++
*/

#include <stdio.h>

using namespace std;

int n, k, l, d;

int  in[128][10240];
int din[128][10240];

long dpr (int, int, int);

int main () {
    int i, j;
    long max = -2147483647, v;
    scanf ("%d %d %d %d", &n, &k, &l, &d);
    for (i = 0; i < d; i ++) {
        for (j = 0; j < l; j ++) {
            scanf ("%d", &in[i][j]);
            din[i][j] = in[i][j];
            if (i > 0) din[i][j] += din[i - 1][j];
        }
    }
    for (i = 0; i < d; i ++) {
        v = dpr (i, 0, k - i - 1);
        if (v > max) max = v;
    }
    printf ("%ld\n", max);
    return 0;
}

long dpr (int i, int j, int x) {
    long max = -2147483647, v, p;
    int q = d > x ? x : d;
    if (j == l - 1 || q == 0) return din[i][j];
    for (p = 0; p <= q; p ++) {
        v = dpr (p, j + 1, x - p);
        if (v > max) max = v;
    }
    return max;
}
