program kdrum;
type rec = record
x,y:byte;
d:int64;
end;
var Fin,Fout:Text;
v,d:array [1..50,1..50] of longint;
xn,x1,x2,y1,y2,i,j,n,m,k:integer;
x:array [1..2500] of rec;
ok:boolean;
{*-------------------------------------------------------*}
{*-------------------------------------------------------*}
begin
assign(fin,'kdrum.in'); Reset(fin);
assign(fout,'kdrum.out'); Rewrite(fout);
readln(fin,n,m,k);
readln(fin,x1,y1,x2,y2);
for i:=1 to n do
begin
for j:=1 to m do
begin
read(fin,v[i,j]);
if v[i,j] = 0 then d[i,j]:=1;
end;
readln(fin);
end;
ok:=true;
inc(xn); x[xn].x:=x1; x[xn].y:=y1; x[xn].d:=v[x1,y1];
d[x1,y1]:=1;
i:=0;
while ok do
begin
inc(i);
x1:=x[i].x;
y1:=x[i].y;
if (x1 = x2) and (y1=y2) and (x[i].d mod k = 0) then//am gasit
begin
writeln(fout,d[x1,y1]);
Break;
end;
//In dreaptaa
if (d[x1,y1+1] = 0) and (y1<m) then
begin
inc(xn);
x[xn].x:=x1;
x[xn].y:=y1+1;
d[x1,y1+1]:=d[x1,y1]+1;
x[xn].d:=x[i].d*v[x1,y1+1];
end;
//In stanga/
if (d[x1,y1-1] = 0) and (y1>1) then
begin
inc(xn);
x[xn].x:=x1;
x[xn].y:=y1-1;
d[x1,y1-1]:=d[x1,y1]+1;
x[xn].d:=x[i].d*v[x1,y1-1];
end;
//In jos
If (d[x1+1,y1] = 0) and (x1<n)then
begin
inc(xn);
x[xn].x:=x1+1;
x[xn].y:=y1;
d[x1+1,y1]:=d[x1,y1]+1;
x[xn].d:=x[i].d*v[x1+1,y1];
end;
//In sus
If (D[x1-1,y1] = 0) and (x1>1) then
begin
inc(xn);
x[xn].x:=x1-1;
x[xn].y:=y1;
d[x1-1,y1]:=d[x1,y1]+1;
x[xn].d:=x[i].d*v[x1-1,y1];
end;
end;
Close(Fin);
Close(fout);
end.