#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
#define MAXN 155
int main(){
freopen("castel.in", "r", stdin);
freopen("castel.out", "w", stdout);
int N, M, S, i, j, l, r, x, y, aux, cnt;
int C[MAXN][MAXN], K[MAXN*MAXN], Qx[MAXN*MAXN], Qy[MAXN*MAXN], use[MAXN][MAXN];
vector<int> Ux[MAXN*MAXN], Uy[MAXN*MAXN];
vector<int>::iterator ii, jj;
int dx[]={1, 0, -1, 0}, dy[]={0, 1, 0, -1};
memset(C, 0, sizeof(C));
scanf("%d%d%d", &N, &M, &S);
for(i=1; i<=N; i++)
for(j=1; j<=M; j++)
scanf("%d", &C[i][j]);
memset(K, 0, sizeof(0));
K[S]=1;
memset(use, 0, sizeof(use));
l=r=1; Qx[1]=S/M+1; Qy[1]=S%M;
use[Qx[1]][Qy[1]]=1;
cnt=1;
while(l<=r){
for(i=0; i<4; i++){
x=Qx[l]+dx[i];
y=Qy[l]+dy[i];
if(!use[x][y]){
if(K[C[x][y]]){
cnt++;
use[x][y]=1;
K[aux=((x-1)*M+y)]=1;
Qx[++r]=x;
Qy[r]=y;
for(ii=Ux[aux].begin(), jj=Uy[aux].begin(); ii!=Ux[aux].end(); ii++, jj++){
cnt++;
K[(*ii-1)*M+*jj]=1;
Qx[++r]=*ii;
Qy[r]=*jj;
}
}
else if(C[x][y]){
Ux[C[x][y]].push_back(x);
Uy[C[x][y]].push_back(y);
use[x][y]=1;
}
}
}
l++;
}
printf("%d\n", cnt);
return 0;
}