#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define BIT(n) ((1ll) << (n))
#define bit(mask, i) (((mask) >> (i)) & 1)
using namespace std;
const int maxn = 1e3;
const int maxk = 2e3;
const int maxc = 4;
const ll INF = 1e18;
int n, m, k;
ll dp[2][BIT(maxc) + 5][maxk + 10], a[maxn + 10][maxc + 10], sum[maxn + 10][BIT(maxc) + 5], ans = -INF;
bool ok[BIT(maxc) + 5];
void maximize(ll &a, ll b)
{
a = max(a, b);
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("DOMINE.INP", "r"))
{
freopen("DOMINE.INP", "r", stdin);
freopen("DOMINE.OUT", "w", stdout);
}
cin >> n >> m >> k;
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < m; j++)
cin >> a[i][j];
for (int mask = 0; mask < BIT(m); mask++)
{
for (int j = 0; j < m; j++)
sum[i][mask] += bit(mask, j) * a[i][j];
}
}
for (int mask = 0; mask < BIT(m); mask++)
{
ok[mask] = 1;
for (int i = 0; i < m; i++)
if (bit(mask, i))
{
if (bit(mask, i + 1))
i++;
else
{
ok[mask] = 0;
break;
}
}
}
for (int mask = 0; mask < BIT(m); mask++)
if (ok[mask])
dp[1][mask][__builtin_popcount(mask) / 2] = sum[1][mask];
for (int i = 1; i < n; i++)
{
for (int mask = 0; mask < BIT(m); mask++)
for (int cnt = 0; cnt <= k; cnt++)
dp[i & 1 ^ 1][mask][cnt] = INF;
for (int mask = 0; mask < BIT(m); mask++)
for (int cnt = 0; cnt <= k; cnt++)
{
if (dp[i & 1][mask][cnt] == INF)
continue;
int submask = (BIT(m) - 1) ^ mask;
bool is_break_ = 0;
for (int mask_col = submask; ; mask_col = (max(0, mask_col - 1)) & submask)
{
if (is_break_ && mask_col == 0)
break;
is_break_ = mask_col == 0;
int submask_2 = (BIT(m) - 1) ^ mask_col;
bool is_break = 0;
for (int mask_row = submask_2; ; mask_row = (max(0, mask_row - 1)) & submask_2)
{
if (is_break && mask_row == 0)
break;
is_break = mask_row == 0;
if (!ok[mask_row])
continue;
int next_cnt = cnt + __builtin_popcount(mask_col) + __builtin_popcount(mask_row) / 2;
int next_mask = mask_col | mask_row;
if (next_cnt > k)
continue;
ll s = dp[i & 1][mask][cnt] + sum[i][mask_col] + sum[i + 1][mask_row | mask_col];
// cout << mask << ' ' << mask_col << ' ' << mask_row << ' ' << cnt << ' ' << next_cnt << ' ' << s, el;
maximize(dp[i & 1 ^ 1][next_mask][next_cnt], s);
}
}
}
}
for (int mask = 0; mask < BIT(m); mask++)
maximize(ans, dp[n & 1][mask][k]);
cout << ans;
}