#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 4e15 + 7;
ll n, m, k;
vector<vector<ll>> magassagok;
vector<vector<vector<ll>>> dp;
ll megold(ll sor, ll oszlop, ll robbantas){
//cout << "hivas: " << sor << " " << oszlop << " " << robbantas << "\n";
if(sor < 0 || n <= sor || oszlop < 0 || n <= oszlop || robbantas < 0){
return INF;
}
if(dp[sor][oszlop][robbantas] != INF){
return dp[sor][oszlop][robbantas];
}
ll vissza = INF;
int mag = magassagok[sor][oszlop];
for(ll i = 0; i <= robbantas; i++){
ll jobbra = megold(sor, oszlop + 1, robbantas - i);
ll lefele = megold(sor + 1, oszlop, robbantas - i);
vissza = min(vissza, min(jobbra, lefele) + mag);
mag /= 2;
}
dp[sor][oszlop][robbantas] = vissza;
return vissza;
}
ll leker(int sor, int oszlop, int robbantas){
if(sor < 0 || n <= sor || oszlop < 0 || m <= oszlop || robbantas < 0 || k < robbantas){
return INF;
}
return dp[sor][oszlop][robbantas];
}
int main(){
cin >> n >> m >> k;
magassagok.assign(n, vector<ll>(m, 0));
dp.assign(n, vector<vector<ll>>(m, vector<ll>(k + 1, INF))); // sor, oszlop, robbantas
for(ll robbantas = 0; robbantas < n; robbantas++){
for(ll sor = 0; sor < m; sor++){
cin >> magassagok[robbantas][sor];
}
}
dp[n - 1][m - 1][0] = magassagok[n - 1][m - 1];
for(ll robbantas = 1; robbantas <= k; robbantas++){
dp[n - 1][m - 1][robbantas] = dp[n - 1][m - 1][robbantas - 1] / 2;
}
for(int robbantas = 0; robbantas <= k; robbantas++){
for(int sor = n - 1; sor >= 0; sor--){
for(int oszlop = m - 1; oszlop >= 0; oszlop--){
if(sor == n - 1 && oszlop == m - 1) continue;
ll mag = magassagok[sor][oszlop];
ll vissza = INF;
for(ll i = 0; i <= robbantas; i++){
ll jobbra = leker(sor, oszlop + 1, robbantas - i);
ll lefele = leker(sor + 1, oszlop, robbantas - i);
vissza = min(vissza, min(jobbra, lefele) + mag);
mag /= 2;
}
dp[sor][oszlop][robbantas] = vissza;
//cout << j << " " << l << " " << i << " : " << a << " " << b << " " << c << " " << d << " " << e << "\n";
}
}
}
cout << dp[0][0][k] << "\n";
//cout << megold(0, 0, k) << "\n";
/*for(ll i = 0; i <= k; i++){
for(ll j = 0; j < n; j++){
for(ll l = 0; l < m; l++){
if(dp[j][l][i] == INF){
cout << "-1\t";
continue;
}
cout << dp[j][l][i] << "\t";
}
cout << "\n";
}
cout << "\n\n";
}*/
}