#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int m,n,k,p,t,tim;
struct node{
int x,y,num;
}hs[40005];
inline bool cmp(const node &u,const node &v)
{
return u.num >v.num ;
}
int main()
{
scanf("%d%d%d",&m,&n,&k);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&p);
if(p>0) hs[++t].x=i,hs[t].y=j,hs[t].num=p;
}
sort(hs+1,hs+t+1,cmp);
tim+=hs[1].x+1;
int i=1,ans=0;
while(tim+hs[i].x<=k)
{
ans+=hs[i++].num;
tim+=abs(hs[i].x-hs[i-1].x)+abs(hs[i].y-hs[i-1].y)+1;
}
cout<<ans<<endl;
}
#include<cstdio>
#include<algorithm>
using namespace std;
int m,n,k,p,t,tim;
struct node{
int x,y,num;
}hs[40005];
inline bool cmp(const node &u,const node &v)
{
return u.num >v.num ;
}
int main()
{
scanf("%d%d%d",&m,&n,&k);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&p);
if(p>0) hs[++t].x=i,hs[t].y=j,hs[t].num=p;
}
sort(hs+1,hs+t+1,cmp);
tim+=hs[1].x+1;
int i=1,ans=0;
while(tim+hs[i].x<=k)
{
ans+=hs[i++].num;
tim+=abs(hs[i].x-hs[i-1].x)+abs(hs[i].y-hs[i-1].y)+1;
}
cout<<ans<<endl;
}