#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<set>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<iostream>
#include<string>
#include<cmath>
#define inf 2e9
#define FOR(i,a,b) for(i=(a);i<=(b);i++)
#define ROF(i,a,b) for(i=(a);i>=(b);i--)
typedef long long LL;
using namespace std;
int dp[110][110][110],a[110][110],s1[110][110],n,m,K,l;
int main()
{
  scanf("%d%d%d",&n,&m,&K);
  int i,j,k;
  FOR(i,1,n) FOR(j,1,m) scanf("%d",&a[i][j]);
  FOR(j,1,m) 
  {
    s1[j][0]=0; 
    FOR(i,1,n) s1[j][i]=s1[j][i-1]+a[i][j];
  }
  K=2*K+1;int ans=-1e9;
  FOR(i,1,n)
  {
    memset(dp,235,sizeof(dp));
    dp[1][1][0]=a[i][1];
    FOR(j,1,i-1) dp[1][1][j]=dp[1][1][j-1]+a[j][1];
    FOR(j,2,m)
    {
      FOR(k,1,K)
      {
        FOR(l,0,i-1) dp[j][k][l]=max(dp[j][k][l],dp[j-1][k][l]+s1[j][i]-s1[j][i-l-1]);
        if (k==1) 
        {
          FOR(l,0,i-1) dp[j][1][l]=max(dp[j][1][l],s1[j][i]-s1[j][i-l-1]);
          continue;
        }
        if (k&1)
        {
          int Max=dp[j-1][k-1][0];
          FOR(l,1,i-1)
          {
            dp[j][k][l]=max(dp[j][k][l],Max+s1[j][i]-s1[j][i-l-1]);
            Max=max(Max,dp[j-1][k-1][l]);
          }
        }else
        {
          int Max=dp[j-1][k-1][i-1];
          ROF(l,i-2,0)
          {
            dp[j][k][l]=max(dp[j][k][l],Max+s1[j][i]-s1[j][i-l-1]);
            Max=max(Max,dp[j-1][k-1][l]);
          }
        }
      }
    }
    FOR(j,1,m) FOR(l,0,i-1) ans=max(ans,dp[j][K][l]);
  }
  printf("%d\n",ans);
}