#include <fstream>
using namespace std;
ifstream f ("kdrum.in");
ofstream g ("kdrum.out");
int di[] = {0, 1, 0, -1};
int dj[] = {1, 0, -1, 0};
int parc[51][51], v[51][51];
void rez(int a[][51], int n, int m, int k,
int x1, int y1, int x2, int y2, int& lRez,
int lung, long long prod)
{
if ((x1 <= n && x1 >= 1)&&(y1 <= m && y1 >= 1)&& a[y1][x1] != 0 && lung <v[y1][x1])
{
v[y1][x1] = lung;
if (x1 == x2 && y1 == y2)
{
if ((prod * a[y1][x1])%k == 0)
if (lung < lRez)
lRez = lung+1;
}
else{
long long prodNou = prod * a[y1][x1];
for (int i = 0; i < 4; i++)
rez(a,n,m,k,x1+dj[i], y1+di[i],x2,y2,lRez,lung+1,prodNou);
}
}
}
int main()
{
int n, m, k;
int x1, y1, x2, y2, rezultat = 51;
f >> n >> m >> k;
f >> x1 >> y1 >> x2 >> y2;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++){
f >> parc[i][j];
v[i][j] = 51;
}
rez(parc,n,m,k,x1,y1,x2,y2,rezultat,0,1);
g << rezultat;
return 0;
}