from collections import deque H, W, sx, sy = map(int, input().split()) sx -= 1 sy -= 1 S = [input() for _ in range(H)] Q = int(input()) gx = [0] * Q gy = [0] * Q T = [0] * Q for i in range(Q): gx[i], gy[i], T[i] = map(int, input().split()) gx[i] -= 1 gy[i] -= 1 dx = [1, 1, 0, -1, -1, -1, 0, 1] dy = [0, 1, 1, 1, 0, -1, -1, -1] INF = 10 ** 9 + 7 dist = [[[[INF] * 2 for _ in range(9)] for _ in range(W)] for _ in range(H)] visited = [[[[False] * 2 for _ in range(9)] for _ in range(W)] for _ in range(H)] dq = deque() dq.appendleft((sx, sy, 8, 0)) dist[sx][sy][8][0] = 0 while dq: px, py, direction, parity = dq.popleft() if visited[px][py][direction][parity]: continue visited[px][py][direction][parity] = True for ndir in range(8): nx = px + dx[ndir] ny = py + dy[ndir] if not (0 <= nx < H and 0 <= ny < W): continue if S[nx][ny] == '#': continue if ndir == direction: if dist[nx][ny][ndir][parity] > dist[px][py][direction][parity]: dist[nx][ny][ndir][parity] = dist[px][py][direction][parity] dq.appendleft((nx, ny, ndir, parity)) else: np = parity ^ 1 if dist[nx][ny][ndir][np] > dist[px][py][direction][parity] + 1: dist[nx][ny][ndir][np] = dist[px][py][direction][parity] + 1 dq.append((nx, ny, ndir, np)) for i in range(Q): ans = min(dist[gx[i]][gy[i]][d][T[i] % 2] for d in range(8)) if ans <= T[i]: print("Yes") else: print("No")