/*
TASK: tre
LANG: C
*/
#include <stdio.h>

int a[10003][103]={0,0};
int el [10003]={0};

int min (int,int);

int main ()
{
    int n,k,l,d,i,j,tmp;
    int cmp=0,ans=0,ind;
    
    scanf ("%d %d %d %d",&n,&k,&l,&d);
    
    if (n==0)
        {
            printf ("0\n");
            return 0;
        }
    
    for (i=1;i<=min(k,d);i++)
        for (j=1;j<=l;j++)
            {
                scanf ("%d",&tmp);
                a[i][j]=a[i-1][j]+tmp;
                if (a[i][j]>=0)
                    {
                        a[0][j]=i;
                        el[j]=a[i][j];
                    }
            }
    
    for (i=1;i<=l;i++)
        {
            ans+=el[i];
            cmp+=a[0][i];
        }
    
    while (cmp>k)
        {
            tmp=1000000;
            for (i=1;i<=l;i++)
                if (el[i]<tmp && a[0][i]!=0)
                    {
                        tmp=el[i];
                        ind=i;
                    }

            ans-=el[ind];
            cmp--;
            a[0][ind]--;
            while (a[0][ind]>0 && a[a[0][ind]][ind]<0)
                {
                    cmp--;
                    a[0][ind]--;
                }
            cmp+=a[0][ind];
        }
    
    printf ("%d\n",ans);
    
    return 0;
}

int min (int x,int y)
{
    return (x<y)? x : y;
}
