#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);
}