#include <bits/stdc++.h>
using namespace std;
//p:存放数组的坐标及坐标对应的花生数量
int m,n,k,a[30][30],p[1000][3];
int main(){
int i,j,s = 0;
//读入数据
cin>>m>>n>>k;
for(i = 1;i <= m;i++){
for(j = 1;j <= n;j++){
cin>>a[i][j];
if(a[i][j] > 0){
p[s][0] = i;
p[s][1] = j;
p[s][2] = a[i][j];
s++;
}
}
}
//对p数组按照花生数量由大到小排序
for(i = 1;i < s;i++){
for(j = 0;j <= s - i - 1;j++){
if(p[j][2] < p[j+1][2]){
swap(p[j],p[j+1]);
}
}
}
//统计时间和摘到的花生数量
int time = 0;
int sum = 0;
//遍历每个花生点
for(i = 0;i < s;i++){
//如果是第一个花生点
if(i == 0){
if(p[i][0] + 1 + p[i][0] <= k){
time = p[i][0] + 1;
sum = sum + p[i][2];
}else{
break;
}
}else{
if(time + abs(p[i][0]-p[i-1][0]) + abs(p[i][1]-p[i-1][1]) + 1 + p[i][0] <= k){
time = time + abs(p[i][0]-p[i-1][0]) + abs(p[i][1]-p[i-1][1]) + 1;
sum = sum + p[i][2];
}else{
break;
}
}
}
cout<<sum<<endl;
}
/**************************************************************
Problem: 1482
User: admin
Language: C++
Result: Accepted
Time:75 ms
Memory:2088 kb
****************************************************************/