{free pascal}
{$IFDEF NORMAL}
{$I-,Q-,R-,S-}
{$ENDIF NORMAL}
{$IFDEF DEBUG}
{$I+,Q+,R+,S-}
{$ENDIF DEBUG}
{$IFDEF RELEASE}
{$I-,Q-,R-,S-}
{$ENDIF RELEASE}
const nmax=155;
inmax=30000;
type matrix = array[0..nmax,0..nmax] of integer;
vector = array[0..nmax*nmax+1000] of integer;
point = record lin,col:integer; end;
var a,vrf:matrix;
c:vector;
ct,max,ot:longint;
q:array[0..8000005] of point;
i,j,n,m,k,ini,inj:integer;
fi,fo:text;
first,last:longint;
start,pu,pc:point;
indx,chei,add:longint;
procedure qin(p:point);
begin
inc(last);
if last=8000000 then last:=1;
q[last]:=p;
end;
function qout:point;
begin
inc(first);
if first=8000000 then first:=1;
qout:=q[first];
end;
function isempty:boolean;
begin isempty:=first=last; end;
procedure bord;
begin
for i:=0 to m+1 do
begin
a[i,0]:=inmax; a[i,n+1]:=inmax; end;
for i:=0 to n+1 do
begin
a[0,i]:=inmax; a[0,m+1]:=inmax; end;
end;
begin
ct:=0;
max:=0;
assign(fi,'castel.in'); reset(fi);
assign(fo,'castel.out'); rewrite(fo);
readln(fi,m,n,k);
for i:=1 to m do
for j:=1 to n do
read(fi,a[i,j]);
bord;
if k mod n=0 then ini:=(k div n)
else ini:=k div n + 1;
if k mod n=0 then inj:=n
else inj:=(k mod n);
start.lin:=ini;
start.col:=inj;
chei:=1;
qin(start);
c[k]:=1;
chei:=1;
vrf[ini,inj]:=1;
ct:=1;
while not isempty do
begin
pc:=qout;
pu.lin:=pc.lin+1; pu.col:=pc.col;
if a[pu.lin,pu.col]<>inmax then
if c[a[pu.lin,pu.col]]=1 then
begin
if vrf[pu.lin,pu.col]=0 then
begin
vrf[pu.lin,pu.col]:=1;
inc(ct);
end;
qin(pu);
if pu.col mod n=0 then add:=n
else add:=pu.col mod n;
indx:=(pu.lin-1) * n + add;
if c[indx]=0 then begin inc(chei); c[indx]:=1; end;
end;
pu.lin:=pc.lin-1; pu.col:=pc.col;
if a[pu.lin,pu.col]<>inmax then
if c[a[pu.lin,pu.col]]=1 then
begin
if vrf[pu.lin,pu.col]=0 then
begin
vrf[pu.lin,pu.col]:=1;
inc(ct);
end;
qin(pu);
if pu.col mod n =0 then add:=n
else add:=pu.col mod n;
indx:=(pu.lin-1) * n + add;
if c[indx]=0 then begin inc(chei); c[indx]:=1; end;
end;
pu.lin:=pc.lin; pu.col:=pc.col+1;
if a[pu.lin,pu.col]<>inmax then
if c[a[pu.lin,pu.col]]=1 then
begin
if vrf[pu.lin,pu.col]=0 then
begin
vrf[pu.lin,pu.col]:=1;
inc(ct);
end;
qin(pu);
if pu.col mod n=0 then add:=n
else add:=pu.col mod n;
indx:=(pu.lin-1) * n + add;
if c[indx]=0 then begin inc(chei); c[indx]:=1; end;
end;
pu.lin:=pc.lin; pu.col:=pc.col-1;
if a[pu.lin,pu.col]<>inmax then
if c[a[pu.lin,pu.col]]=1 then
begin
if vrf[pu.lin,pu.col]=0 then
begin
vrf[pu.lin,pu.col]:=1;
inc(ct);
end;
qin(pu);
if pu.col mod n=0 then add:=n
else add:=pu.col mod n;
indx:=(pu.lin-1) * n + add;
if c[indx]=0 then begin inc(chei); c[indx]:=1; end;
end;
if chei=max then begin
inc(ot);
if ot=ct*1000 then break;
end;
if chei > max then begin
max:=chei;
ot:=0;
end;
end;
writeln(fo,ct);
close(fi);
close(fo);
end.