#include using namespace std; #define REP(i,a,b) for(i=a;i'9')break;*x=(*x)*10+k-'0';}if(m)(*x)=-(*x);} int reader(char c[]){int i,s=0;for(;;){mygc(i);if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF) break;}c[s++]=i;for(;;){mygc(i);if(i==' '||i=='\n'||i=='\r'||i=='\t'||i==EOF) break;c[s++]=i;}c[s]='\0';return s;} template void reader(T *x, S *y){reader(x);reader(y);} template void reader(T *x, S *y, U *z){reader(x);reader(y);reader(z);} void writer(const char x[], char c){int i;for(i=0;x[i]!='\0';i++)mypc(x[i]);mypc(c);} template void writerLn(T x){writer(x,'\n');} struct dimensionCompress3 { int B, C; void set(int b, int c){B=b;C=c;} void set(int a, int b, int c){B=b;C=c;} int mask(int a, int b, int c){return(a*B+b)*C+c;} void para(int mask, int *a, int *b, int *c){*a=mask/(B*C);*b=mask%(B*C)/C;*c=mask%C;} }; int X, Y; int A, Sx, Sy; int B, Gx, Gy; char mp[100][100]; int vis[4500000], st[4500000], sts; int main(){ int i, j, k, mask, smask; int x, y, s, nx, ny, ns, d; int mn, mx; int dx[4] = {-1,1,0,0}, dy[4] = {0,0,-1,1}; dimensionCompress3 dim; reader(&X,&Y); reader(&A,&Sx,&Sy); reader(&B,&Gx,&Gy); rep(i,X) reader(mp[i]); mn = max(1, min(A,B)-X-Y-1); mx = max(A,B) + X + Y + 1; dim.set(X, Y, 1110); sts = 0; mask = dim.mask(Sx,Sy,A); vis[mask] = 1; st[sts++] = mask; while(sts){ mask = st[--sts]; dim.para(mask, &x, &y, &s); if(x==Gx && y==Gy && s==B){ writerLn("Yes"); return 0; } rep(d,4){ nx = x + dx[d]; ny = y + dy[d]; if(nx < 0 || ny < 0 || nx >= X || ny >= Y) continue; if(mp[nx][ny]=='.') ns = s-1; else ns = s+1; if(ns < mn || ns > mx) continue; smask = dim.mask(nx, ny, ns); if(!vis[smask]) vis[smask] = 1, st[sts++] = smask; } } writerLn("No"); return 0; }