#include <bits/stdc++.h>
#define int __int128
#define ll long long
#define gcd(x, y) __gcd(x,y)
#define IOS cin.tie(0),cout.tie(0)->sync_with_stdio(0)
#define _ 0
#define ldb long double
using namespace std;
istream&operator>>(istream&i,int&x){ll y;return i>>y,x=y,i;}
ostream&operator<<(ostream&o,int x){return o<<((ll)x);}
template<int P>
struct modint {
private:
template<typename T>
inline static const T Down(const T&x) {return x >= P ? x - P : x;}
public:
unsigned int v;
modint(unsigned int v=0) : v(v) {}
using mint = modint;
#define FI friend inline
// FI ostream&operator<<(ostream&o, mint v) {return o<<v.v;}
FI istream&operator>>(istream&i, mint&v) {int x;return i>>x,v.v=Down(x%P+P),i;}
FI mint operator+(mint a, mint b) {return Down(a.v + b.v);}
FI mint operator-(mint a, mint b) {return Down(a.v - b.v + P);}
FI mint operator*(mint a, mint b) {return 1ull * a.v * b.v % P;}
FI mint operator/(mint a, mint b) {return a * ~b;}
FI mint operator^(mint a, int p) {mint r=1; for(; p; p >>= 1, a = a * a) if (p & 1) r = r * a; return r;}
FI mint operator~(mint a) {return a ^ (P - 2);}
FI mint operator-(mint a) {return a.v ? P - a.v : 0;}
FI mint&operator+=(mint&a, mint b) {return a=a+b;}
FI mint&operator-=(mint&a, mint b) {return a=a-b;}
FI mint&operator*=(mint&a, mint b) {return a=a*b;}
FI mint&operator/=(mint&a, mint b) {return a=a/b;}
FI mint&operator^=(mint&a, int b) {return a=a^b;}
FI mint&operator++(mint&a) {return a += 1;}
FI mint&operator--(mint&a) {return a -= 1;}
FI mint operator++(mint&a, signed) {mint x=a; return ++a, x;}
FI mint operator--(mint&a, signed) {mint x=a; return --a, x;}
FI bool operator==(mint a, mint b) {return a.v==b.v;}
FI bool operator!=(mint a, mint b) {return a.v!=b.v;}
#undef FI
};
typedef modint<(int)1e9 + 7> mint;
vector<vector<int> > mat;
struct Nd {
int x, y;
Nd(int x=0, int y=0) : x(x), y(y) {}
bool operator<(const Nd&o) const {
return mat[x][y] > mat[o.x][o.y];
}
};
int D[5]{0, 1, 0, -1, 0};
int h, w, X;
priority_queue<Nd> q;
bool vis[505][505];
void PUSH(int x, int y) {
for (int i = 0; i < 4; i++) {
int dx = x + D[i], dy = y + D[i + 1];
if (0 <= dx && dx < h && 0 <= dy && dy < w &&
!vis[dx][dy]) vis[dx][dy] = 1, q.emplace(dx, dy);
}
}
void work() {
cin >> h >> w >> X;
mat.resize(h, vector<int>(w));
int p, qq;
cin >> p >> qq, p--, qq--;
for (auto &v: mat) {
for (auto &vv: v) cin >> vv;
}
int ss = mat[p][qq];
vis[p][qq] = 1; PUSH(p, qq);
while (q.size()) {
auto [x, y] = q.top(); q.pop();
if (mat[x][y] * X < ss) ss += mat[x][y], PUSH(x, y);
}
cout << ss;
}
signed main() {
IOS;
int T(1);
// cin >> T;
while (T--) work();
return ~~(0^_^0);
}