#include <cstdio>
#define MAXN 150
#define MAXM MAXN*MAXN
#define NRDIR 4
int dl[NRDIR]={-1, 0, 1, 0}, dc[NRDIR]={0, 1, 0, -1};
int a[MAXM+1], b[MAXM+1], next[MAXM+1], lista[MAXN+1][MAXN+1], l[MAXN*MAXN], c[MAXN*MAXN], viz[MAXN+2][MAXN+2], m;
inline void adauga(int x, int y, int l, int c){
m++;
a[m]=l;
b[m]=c;
next[m]=lista[x][y];
lista[x][y]=m;
}
int main(){
int ans, k, i, j, p, nrlin, nrcol, x, t, f;
FILE *fin, *fout;
fin=fopen("castel.in", "r");
fout=fopen("castel.out", "w");
fscanf(fin, "%d%d%d", &nrlin, &nrcol, &k);
for(i=1; i<=nrlin; i++){
for(j=1; j<=nrcol; j++){
fscanf(fin, "%d", &x);
adauga((x-1)/nrcol+1, (x-1)%nrcol+1, i, j);
}
}
for(i=0; i<=nrlin+1; i++){
viz[i][0]=viz[i][nrcol+1]=3;
}
for(i=0; i<=nrcol+1; i++){
viz[0][i]=viz[nrlin+1][i]=3;
}
l[0]=(k-1)/nrcol+1;
c[0]=(k-1)%nrcol+1;
viz[l[0]][c[0]]=2;
ans=1;
k=1;
i=0;
while(i<k){
p=lista[l[i]][c[i]];
while(p){
if(viz[a[p]][b[p]]==0){
viz[a[p]][b[p]]=1;
f=0;
for(t=0; t<NRDIR; t++){
f|=(viz[a[p]+dl[t]][b[p]+dc[t]]==2);
}
if(f){
l[k]=a[p];
c[k]=b[p];
viz[a[p]][b[p]]=2;
ans++;
k++;
}
}
p=next[p];
}
for(t=0; t<NRDIR; t++){
if(viz[l[i]+dl[t]][c[i]+dc[t]]==1){
viz[l[i]+dl[t]][c[i]+dc[t]]=2;
l[k]=l[i]+dl[t];
c[k]=c[i]+dc[t];
ans++;
k++;
}
}
i++;
}
fprintf(fout, "%d\n", ans);
fclose(fin);
fclose(fout);
return 0;
}