#include<stdio.h>
const long MAX = 151 * 151;
long dx[] = {0, 1, 0, -1, 0};
long dy[] = {0, 0, 1, 0,-1};
long chei_ihave[MAX], chei[MAX];
long x[151][151], next[151][151], visit[151][151];
long i, j, ni, nj, inc, sf, n, m, k, sx, sy, num;
void expand(long i, long j)
{
// printf("\n\nexpanding (%ld,%ld).. \n\n", i, j);
visit[i][j] = 1;
chei_ihave[(i - 1) * m + j] = 1;
chei[++sf] = (i - 1) * m + j;
for (long a = 1; a <= 4; ++a)
{
ni = i + dx[a];
nj = j + dy[a];
if (ni >= 1 && ni <= n && nj >= 1 && nj <= m)
{
// printf("attempting (%ld, %ld); ", ni, nj);
if (!visit[ni][nj])
{
// printf(" -- (%ld, %ld) not visited -- ", ni, nj);
if (!chei_ihave[x[ni][nj]])
{
// printf(">> nam %ld << ", x[ni][nj]);
next[x[ni][nj]][++next[x[ni][nj]][0]] = (ni - 1) * m + nj;
visit[ni][nj] = 2;
}
else
{
expand(ni, nj);
}
}
}
}
}
int main()
{
freopen ("castel.in", "rt", stdin);
freopen ("castel.out", "wt", stdout);
scanf("%ld %ld %ld", &n, &m, &k);
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
scanf("%ld", &x[i][j]);
inc = 1;
sx = k / m + 1;
sy = k % m;
expand(sx, sy);
while (inc <= sf)
{
k = chei[inc];
for (i = 1; i <= next[k][0]; i ++)
{
ni = next[k][i] / m + 1;
nj = next[k][i] % m;
expand(ni, nj);
}
++inc;
}
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
num = visit[i][j] == 1 ? num + 1 : num;
printf("%ld\n", num);
return 0;
}
// x[i][j] = (i - 1) * n + j