program castel;
const
fin='castel.in';
fout='castel.out';
nmax=153;
type
list=^elem;
elem=record
urm:list;
x:longint;
end;
var
lst:array[0..nmax*nmax] of list;
cap,ult,q,p:list;
acc,viz:array[0..nmax*nmax] of boolean;
num,i,j,n,m,x,y,k,ii,jj:longint;
procedure cod_coord(var cod,x,y:longint);
begin
x:=(cod-1) div n+1;
y:=(cod-1) mod n+1;
end;
procedure coord_cod(var cod,x,y:longint);
begin
if (x*y<>0) and ((x<=m) and (y<=n)) then
cod:=(x-1)*n+y
else
cod:=0;
end;
procedure insert_coada(x:longint);
var
aux:list;
begin
new(aux);
ult^.x:=x;
viz[x]:=true;
ult^.urm:=aux;
aux^.urm:=nil;
ult:=aux;
end;
procedure extend_key(cod:longint);
var
p,q:list;
i,j,ii,jj,x:longint;
begin
q:=lst[cod]^.urm;
while q<>nil do
begin
acc[q^.x]:=true;
cod_coord(q^.x,i,j);
ii:=i+1;
if viz[q^.x]=false then
begin
coord_cod(x,ii,j);
if viz[x] then
insert_coada(q^.x);
ii:=i-1;
coord_cod(x,ii,j);
if viz[x] then
insert_coada(q^.x);
jj:=j+1;
coord_cod(x,i,jj);
if viz[x] then
insert_coada(q^.x);
jj:=j-1;
coord_cod(x,i,jj);
if viz[x] then
insert_coada(q^.x);
end;
q:=q^.urm;
end;
end;
procedure insert(key,room:longint);
var
aux:list;
begin
new(aux);
aux^.x:=room;
aux^.urm:=lst[key]^.urm;
lst[key]^.urm:=aux;
end;
begin
assign(input,fin);
reset(input);
readln(m,n,k);
for i:=1 to m*n do
begin
new(lst[i]);
lst[i]^.urm:=nil;
end;
y:=0;
for i:=1 to m do
for j:=1 to n do
begin
inc(y);
read(x);
insert(x,y);
end;
close(input);
assign(output,fout);
rewrite(output);
viz[k]:=true;
new(cap);new(ult);cap^.urm:=ult;ult^.urm:=nil;
cap^.x:=k;
p:=cap;
while p<>ult do
begin
extend_key(p^.x);
cod_coord(p^.x,i,j);
ii:=i+1;
coord_cod(x,ii,j);
if (acc[x])and(viz[x]=false) then
insert_coada(x);
ii:=i-1;
coord_cod(x,ii,j);
if (acc[x])and(viz[x]=false) then
insert_coada(x);
jj:=j-1;
coord_cod(x,i,jj);
if (acc[x])and(viz[x]=false) then
insert_coada(x);
jj:=j+1;
coord_cod(x,i,jj);
if (acc[x])and(viz[x]=false) then
insert_coada(x);
p:=p^.urm;
end;
num:=0;
for i:=1 to m*n do
if viz[i] then
inc(num);
writeln(num);
close(output);
end.