from collections import deque dxy = zip([1, 0, -1, 0], [0, 1, 0, -1]) H, W = map(int, raw_input().split()) A, Sy, Sx = map(int, raw_input().split()) B, Gy, Gx = map(int, raw_input().split()) M = [raw_input() for i in xrange(H)] que = deque([(A, Sx, Sy)]) used = [[[False]*51 for i in xrange(51)] for j in xrange(max(A, B) + 100)] while que: a, x, y = que.popleft() if used[a][x][y]: continue used[a][x][y] = True if Gx == x and Gy == y and a == B: print "Yes" break for dx, dy in dxy: nx, ny = x + dx, y + dy if 0 <= nx < W and 0 <= ny < H: na = a + (1 if M[ny][nx] == "*" else -1) if na <= 0 or na >= max(A, B) + 100: continue if used[na][nx][ny]: continue que.append((na, nx, ny)) else: print "No"