#include <iostream>
#include <algorithm>
using namespace std;
const int INF = 1e9;
// ĐỂ MẢNG Ở ĐÂY: Khai báo mảng tĩnh toàn cục tối đa 1005 x 1005 để không bị tràn bộ nhớ
int n, m;
int a[1005][1005];
int F[1005][1005]; // F[i][j] lưu chi phí nhỏ nhất từ ô (i, j) ra biên
int main() {
// Tối ưu tốc độ nhập xuất cho mảng lớn
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int startX, startY;
if (!(cin >> n >> m >> startX >> startY)) return 0;
// Nhập ma trận
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> a[i][j];
F[i][j] = INF; // Ban đầu coi như mọi ô đều chưa có đường ra biên
}
}
// Bước 1: Những ô nằm ở biên thì chi phí ra biên bằng chính nó
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (i == 0 || i == n - 1 || j == 0 || j == m - 1) {
F[i][j] = a[i][j];
}
}
}
// Bước 2: Vòng lặp cập nhật loang bảng số (Co bóp ma trận)
// Với N, M <= 1000, lặp tối đa khoảng 10-20 lần là ma trận ổn định và tối ưu xong
for (int lan = 0; lan < 20; lan++) {
for (int i = 1; i < n - 1; i++) {
for (int j = 1; j < m - 1; j++) {
// Lấy ô có chi phí nhỏ nhất trong 4 hướng xung quanh
int minXungQuanh = min({F[i-1][j], F[i+1][j], F[i][j-1], F[i][j+1]});
// Nếu tìm được đường đi qua hàng xóm tốt hơn đường cũ, cập nhật lại
if (minXungQuanh != INF && a[i][j] + minXungQuanh < F[i][j]) {
F[i][j] = a[i][j] + minXungQuanh;
}
}
}
}
// Bước 3: In ra chi phí tại ô xuất phát
cout << F[startX][startY] << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBJTkYgPSAxZTk7CgovLyDEkOG7giBN4bqiTkcg4bueIMSQw4JZOiBLaGFpIGLDoW8gbeG6o25nIHTEqW5oIHRvw6BuIGPhu6VjIHThu5FpIMSRYSAxMDA1IHggMTAwNSDEkeG7gyBraMO0bmcgYuG7iyB0csOgbiBi4buZIG5o4bubCmludCBuLCBtOwppbnQgYVsxMDA1XVsxMDA1XTsKaW50IEZbMTAwNV1bMTAwNV07IC8vIEZbaV1bal0gbMawdSBjaGkgcGjDrSBuaOG7jyBuaOG6pXQgdOG7qyDDtCAoaSwgaikgcmEgYmnDqm4KCmludCBtYWluKCkgewogICAgLy8gVOG7kWkgxrB1IHThu5FjIMSR4buZIG5o4bqtcCB4deG6pXQgY2hvIG3huqNuZyBs4bubbgogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCBzdGFydFgsIHN0YXJ0WTsKICAgIGlmICghKGNpbiA+PiBuID4+IG0gPj4gc3RhcnRYID4+IHN0YXJ0WSkpIHJldHVybiAwOwoKICAgIC8vIE5o4bqtcCBtYSB0cuG6rW4KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtOyBqKyspIHsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgICAgIEZbaV1bal0gPSBJTkY7IC8vIEJhbiDEkeG6p3UgY29pIG5oxrAgbeG7jWkgw7QgxJHhu4F1IGNoxrBhIGPDsyDEkcaw4budbmcgcmEgYmnDqm4KICAgICAgICB9CiAgICB9CgogICAgLy8gQsaw4bubYyAxOiBOaOG7r25nIMO0IG7hurFtIOG7nyBiacOqbiB0aMOsIGNoaSBwaMOtIHJhIGJpw6puIGLhurFuZyBjaMOtbmggbsOzCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKSB7CiAgICAgICAgICAgIGlmIChpID09IDAgfHwgaSA9PSBuIC0gMSB8fCBqID09IDAgfHwgaiA9PSBtIC0gMSkgewogICAgICAgICAgICAgICAgRltpXVtqXSA9IGFbaV1bal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gQsaw4bubYyAyOiBWw7JuZyBs4bq3cCBj4bqtcCBuaOG6rXQgbG9hbmcgYuG6o25nIHPhu5EgKENvIGLDs3AgbWEgdHLhuq1uKQogICAgLy8gVuG7m2kgTiwgTSA8PSAxMDAwLCBs4bq3cCB04buRaSDEkWEga2hv4bqjbmcgMTAtMjAgbOG6p24gbMOgIG1hIHRy4bqtbiDhu5VuIMSR4buLbmggdsOgIHThu5FpIMawdSB4b25nCiAgICBmb3IgKGludCBsYW4gPSAwOyBsYW4gPCAyMDsgbGFuKyspIHsgCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuIC0gMTsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgbSAtIDE7IGorKykgewogICAgICAgICAgICAgICAgLy8gTOG6pXkgw7QgY8OzIGNoaSBwaMOtIG5o4buPIG5o4bqldCB0cm9uZyA0IGjGsOG7m25nIHh1bmcgcXVhbmgKICAgICAgICAgICAgICAgIGludCBtaW5YdW5nUXVhbmggPSBtaW4oe0ZbaS0xXVtqXSwgRltpKzFdW2pdLCBGW2ldW2otMV0sIEZbaV1baisxXX0pOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBO4bq/dSB0w6xtIMSRxrDhu6NjIMSRxrDhu51uZyDEkWkgcXVhIGjDoG5nIHjDs20gdOG7kXQgaMahbiDEkcaw4budbmcgY8WpLCBj4bqtcCBuaOG6rXQgbOG6oWkKICAgICAgICAgICAgICAgIGlmIChtaW5YdW5nUXVhbmggIT0gSU5GICYmIGFbaV1bal0gKyBtaW5YdW5nUXVhbmggPCBGW2ldW2pdKSB7CiAgICAgICAgICAgICAgICAgICAgRltpXVtqXSA9IGFbaV1bal0gKyBtaW5YdW5nUXVhbmg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gQsaw4bubYyAzOiBJbiByYSBjaGkgcGjDrSB04bqhaSDDtCB4deG6pXQgcGjDoXQKICAgIGNvdXQgPDwgRltzdGFydFhdW3N0YXJ0WV0gPDwgIlxuIjsKCiAgICByZXR1cm4gMDsKfQo=