#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
****************************************************************/