/*
TASK:TRE
LANG:C
*/
#include <stdio.h>
int dp[128][10002];
int bo[10002],q;
int main()
{
    int n,k,l,d,i,j;
    scanf("%d %d %d %d" ,&n,&k,&l,&d);
    for(i = 0;i < l;i++)
    {
          scanf("%d",&dp[0][i]);
    }
    for(i = 1;i < d;i++)
    {
          for(j = 0;j < l;j++)
          {
                scanf("%d",&dp[i][j]);
                dp[i][j] +=  dp[i-1][j];
          }
          
    }
    for(q = 1;q <= k;q++)
    {
          int max = 0,maxi,maxj;
          for(i = 0;i < q;i++)
          {
                for(j = 0;j < l;j++)
                {
                      if(max < dp[i][j] + bo[q-i-1])
                      {
                              max = dp[i][j] + bo[q-i-1];
                              maxi = i;
                              maxj = j;
                      }
                 }
          }
          if(max)
          {
           bo[q] = max;
           dp[maxi][maxj] = 0;
          }
    }
    printf("%d",bo[k]);
    return 0;
    
}

