#include<stdio.h> #define ABS(a) ((a)>0?(a):-(a)) void dfs(int x,int y,int *board,int h,int w,int *flag){ if(flag[x*w+y]) return; flag[x*w+y]=1; int d[]={1,0,-1,0,1}; int i; for(i=0;i<4;i++){ int nx=x+d[i]; int ny=y+d[i+1]; if(!(nx>=0 && nx<h && ny>=0 && ny<w)) continue; if(ABS(board[x*w+y]-board[nx*w+ny])<=1) dfs(nx,ny,board,h,w,flag); int nnx=x+2*d[i]; int nny=y+2*d[i+1]; if(!(nnx>=0 && nnx<h && nny>=0 && nny<w)) continue; if(board[nnx*w+nny]==board[x*w+y]&&board[nx*w+ny]<board[x*w+y]) dfs(nnx,nny,board,h,w,flag); } return; } void run(void){ int h,w; scanf("%d%d",&h,&w); int sx,sy,gx,gy; scanf("%d%d%d%d",&sx,&sy,&gx,&gy); int board[2500]; int flag[2500]; int i,j; for(i=0;i<h;i++){ for(j=0;j<w;j++){ scanf("%1d",board+i*w+j); flag[i*w+j]=0; } } dfs(sx-1,sy-1,board,h,w,flag); printf("%s\n",flag[(gx-1)*w+gy-1]?"YES":"NO"); return; } int main(void){ run(); return 0; }