#include char s[100005], ss[100005]; int dp[100005][2]; int q[500005], left, right; int checked[100005][2][4]; int main() { int h, w, sx, sy; scanf("%d %d %d %d", &h, &w, &sx, &sy); sx--; sy--; int i, j, k; for (i = 0; i < h; i++) { scanf("%s", ss); for (j = 0; j < w; j++) s[w * i + j] = ss[j]; } int di[8] = { -1,-1,-1,0,1,1,1,0 }; int dj[8] = { -1,0,1,-1,1,0,-1,1 }; int ii, jj, d; for (i = 0; i < h * w; i++) dp[i][0] = dp[i][1] = 1e9; for (i = 0; i < h * w; i++) for (j = 0; j < 4; j++) checked[i][0][j] = checked[i][1][j] = 0; left = right = 0; dp[w * sx + sy][0] = 0; q[right++] = 2 * w * sx + 2 * sy; while (left < right) { i = q[left++]; d = i % 2; i /= 2; j = i % w; i /= w; for (k = 0; k < 8; k++) { if (checked[w * i + j][1 - d][k % 4] > 1) continue; for (ii = i, jj = j;;) { ii += di[k]; jj += dj[k]; if (ii < 0 || jj < 0 || ii >= h || jj >= w) break; if (s[w * ii + jj] == '#') break; if (dp[w * ii + jj][1 - d] > dp[w * i + j][d] + 1) { dp[w * ii + jj][1 - d] = dp[w * i + j][d] + 1; q[right++] = 2 * w * ii + 2 * jj + 1 - d; } checked[w * ii + jj][1 - d][k % 4]++; } } } int q; scanf("%d", &q); int gx, gy, t; for (i = 0; i < q; i++) { scanf("%d %d %d", &gx, &gy, &t); if (dp[w * (gx - 1) + gy - 1][t % 2] > t) printf("No\n"); else printf("Yes\n"); } return 0; }