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

#include <iostream>
#include <cstdio>
using namespace std;
int N,K,L,D,P[101][10002],T[1024],dolu[1024],bel[1024],end=0;
int b[1002][10002];
void rebuild()
{
     for(int i=1;i<=L;i++)
     {
             int curPr=0;
             int drCur=0;
             for(int j=1;j<=D;j++)
             {
                     if(P[j][i]<0) curPr+=P[j][i];
                     else
                     {
                         end++;
                         T[end]=P[j][i]+curPr+drCur;
                         dolu[end]=j;
                         drCur=T[end];
                         bel[end]=i;
                         curPr=0;
                     }
             }
     }
}
/*
int B(int x,int y)
{
    if(y==0) return 0;
    if(x>end) return 0;

    int n=1;
    for(int i=x+1;bel[x]==bel[i];i++) n++;
    if(b[x+n][y]==-1) b[x+n][y]=B(x+n,y);
    int MAX=b[x+n][y];    
    for(int i=0;i<n;i++)
            if(y-dolu[x+i]>=0)
            {
                              if(b[x+n][y-dolu[x+i]]==-1) b[x+n][y-dolu[x+i]]=B(x+n,y-dolu[x+i]);
                              
                              if(MAX<b[x+n][y-dolu[x+i]]+T[x+i])
                                                      MAX=b[x+n][y-dolu[x+i]]+T[x+i];
            }
return MAX;
}
   */
   void fillB()
   {
       for(int x=end;x>0;x--)
               for(int y=1;y<=K;y++)
               {
                           int n=1;
                                   for(int i=x+1;bel[x]==bel[i];i++) n++;
                           int MAX=b[x+n][y];
                           for(int i=0;i<n;i++)
                                    if(y-dolu[x+i]>=0)
                                    {
                                                      if(MAX<b[x+n][y-dolu[x+i]]+T[x+i])
                                                      MAX=b[x+n][y-dolu[x+i]]+T[x+i];
                                                      
                                    }
                           b[x][y]=MAX;
               }
       }
                                                      
int main()
{
    cin>>N>>K>>L>>D;
    for(int i=1;i<=D;i++)
            for(int j=1;j<=L;j++)
                    scanf("%d",&P[i][j]);
          
    rebuild();
 
 
fillB();
            
    cout<<b[1][K]<<endl;
}
