#include #include #include #include int main() { using namespace std; int h, w, sx, sy, gx, gy; cin >> h >> w >> sx >> sy >> gx >> gy; int s = (sx - 1) * w + (sy - 1); int g = (gx - 1) * w + (gy - 1); vector b(h); for (auto &e : b) { cin >> e; } atcoder::dsu uf(h * w); for (int x = 0; x < h; x++) { for (int y = 0; y < w; y++) { int p = x * w + y; if (x < h - 1 && abs(b[x][y] - b[x + 1][y]) < 2) { uf.merge(p, p + w); } if (y < w - 1 && abs(b[x][y] - b[x][y + 1]) < 2) { uf.merge(p, p + 1); } if (x < h - 2 && b[x][y] == b[x + 2][y] && b[x][y] > b[x + 1][y]) { uf.merge(p, p + w * 2); } if (y < w - 2 && b[x][y] == b[x][y + 2] && b[x][y] > b[x][y + 1]) { uf.merge(p, p + 2); } } } cout << (uf.same(s, g) ? "YES\n" : "NO\n"); }