#include <cstdio>
#define inf (1<<30)-1
#define N 51
const int cx[4]={0,0,1,-1};
const int cy[4]={1,-1,0,0};
int A[N][N],E[N][N],n,m,i,j,k,x1,y1,x2,y2,minim;
inline int min(int a, int b)
{
return (a<b?a:b);
}
void drum(int x, int y, int c, int p)
{
if (x==x2 && y==y2)
if (p%k==0) minim=min(minim,c);
else;
else
{
E[x][y]=1;
int iu,ju,k;
for (k=0; k<=3; k++)
{
iu=x+cx[k]; ju=y+cy[k];
if (!E[iu][ju])
{
drum(iu,ju,c+1,p*A[iu][ju]);
E[iu][ju]=0;
}
}
}
}
int main()
{
freopen("kdrum.in","r",stdin);
freopen("kdrum.out","w",stdout);
scanf("%d%d%d\n",&n,&m,&k);
scanf("%d%d%d%d\n",&x1,&y1,&x2,&y2);
for (i=1; i<=n; i++)
for (j=1; j<=m; j++) scanf("%d",&A[i][j]);
for (i=0; i<=n+1; i++)
{
E[i][0]=1;
E[i][m+1]=1;
}
for (i=0; i<=m+1; i++)
{
E[0][i]=1;
E[n+1][i]=1;
}
minim=inf;
drum(x1,y1,1,A[x1][y1]);
printf("%d",minim);
return 0;
}