#include #include #include #include #include #include #include #include #include #include #define ALL(obj) (obj).begin(),(obj).end() #define RALL(obj) (obj).rbegin(),(obj).rend() #define P pair #define MOD 1000000007 #define INF 1012345678 #define NINF (-2147483647-1) #define LLINF 9223372036854775807 using ll = long long; using namespace std; int h, w; int b[51][51]; bool visited[51][51]; int dx[] = {1,0,-1, 0}; int dy[] = {0,1, 0,-1}; int dx2[] = {2,0,-2, 0}; int dy2[] = {0,2, 0,-2}; void dfs(int x,int y) { visited[x][y] = true; for (int i = 0; i < 4; i++) { if (x + dx[i] < h && x + dx[i] >= 0 && y + dy[i] < w && y + dy[i] >= 0 && abs(b[x][y] - b[x + dx[i]][y + dy[i]]) <= 1 && !visited[x + dx[i]][y + dy[i]]) { dfs(x + dx[i], y + dy[i]); } } for (int i = 0; i < 4; i++) { if (x + dx2[i] < h && x + dx2[i] >= 0 && y + dy2[i] < w && y + dy2[i] >= 0 && b[x][y] == b[x + dx2[i]][y + dy2[i]] && b[x][y] > b[x + dx[i]][y + dy[i]] && !visited[x + dx2[i]][y + dy2[i]]) { dfs(x + dx2[i], y + dy2[i]); } } } int main() { cin.tie(0); ios::sync_with_stdio(false); int sx, sy, gx, gy; cin >> h >> w; cin >> sx >> sy >> gx >> gy; sx--; sy--; gx--; gy--; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { char c; cin >> c; b[i][j] = c - '0'; } } dfs(sx, sy); if (visited[gx][gy]) { cout << "YES" << endl; } else { cout << "NO" << endl; } getchar(); getchar(); }