#include <fstream>
#define mod 20000
#define Mod 200
#define cod(x,y) (x-1)*m+y
#define INF 0x7fffffff
#define pune_in_coada(xx,yy) dr++,coada[0][dr%mod] = xx, coada[1][dr%mod] = yy;
#define pune_in_alta_coada(keie,xx,yy) D[keie]++, ramas[keie][D[keie]%Mod].x = xx,ramas[keie][D[keie]%Mod].y = yy
#define pune_dintr_o_coada_in_alta(keie) dr++, coada[0][dr%mod] = ramas[keie][S[keie]%Mod].x, coada[1][dr%mod] = ramas[keie][S[keie]%Mod].y, S[keie]++
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int n, m, i, j, k, a[151][151], xi, yi;
int trb[151][151];
bool fol[151][151];
bool cheie[22555];
struct
{
int x, y;
}ramas[152][Mod];
int S[152], D[152];
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
bool inauntru(int x, int y)
{
return (x >= 1 && x <= n && y >= 1 && y <= m);
}
void cauta()
{
int coada[2][mod], st = 0, dr = 0;
int x, y, xx, yy;
coada[0][st] = xi, coada[1][st] = yi;
fol[xi][yi] = 0;
cheie[(xi-1)*m+yi] = 1;
int val1;
while (st <= dr)
{
x = coada[0][st%mod], y = coada[1][st%mod];
val1 = cod(x,y);
for (i = 1; i <= D[val1]; i++)
{
fol[ramas[val1][i%Mod].x][ramas[val1][i%Mod].y] = 1;
//pune_in_coada(ramas[val1][i%Mod].x, ramas[val1][i%Mod].y);
}
for (i = 0; i < 4; i++)
{
xx = x+dx[i], yy = y+dy[i];
if (inauntru(xx, yy) && fol[xx][yy] == 0)
{
if (cheie[a[xx][yy]] == 1)
{
pune_in_coada(xx,yy);
fol[xx][yy] = 1;
cheie[cod(xx,yy)] = 1;
}
else;
pune_in_alta_coada(a[xx][yy], xx, yy);
}
}
st++;
}
}
int main()
{
f >> n >> m >> k;
xi = k/m+(k%m>0), yi = k%m;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
f >> a[i][j], trb[i][j] = cod(i,j);
cauta();
int cnt = 0;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
if (fol[i][j] == 1)
cnt++;
g << cnt;
return 0;
}