from collections import deque, defaultdict, Counter from bisect import bisect_left, bisect_right, insort from itertools import permutations, combinations, groupby from heapq import heappop, heappush import math, sys input = lambda: sys.stdin.readline().rstrip("\r\n") def printl(li, sep=" "): print(sep.join(map(str, li))) def yn(flag): print(Yes if flag else No) _int = lambda x: int(x)-1 MOD = 998244353 #10**9+7 INF = 1<<60 Yes, No = "Yes", "No" def ctypes(li, types): assert len(li) == len(types) return [t(a) for a, t in zip(li, types)] def tinput(*types): li = input().split() return ctypes(li, types) H, W, sx, sy = tinput(int, int, _int, _int) S = [input() for _ in range(H)] q = deque([(sx, sy, 0)]) vis = [INF]*(H*W*2) def ind(i, j, t): return i*W*2 + j*2 + t vis[ind(sx, sy, 0)] = 0 dir = [(1, 0), (1, 1), (0, 1), (-1, 1), (-1, 0), (-1, -1), (0, -1), (1, -1)] while q: i, j, t = q.popleft() for d in dir: k = 1 while True: ni, nj = i+d[0]*k, j+d[1]*k if ni < 0 or H <= ni or nj < 0 or W <= nj: break if S[ni][nj] == "#": break if vis[ind(ni, nj, t^1)] < INF: break vis[ind(ni, nj, t^1)] = vis[ind(i, j, t)]+1 q.append((ni, nj, t^1)) k += 1 for _ in range(int(input())): x, y, t = tinput(_int, _int, int) v = vis[ind(x, y, t&1)] yn(v <= t)