#include using namespace std; #define rep(i,a,b) for(ll i=a;i=b;i--) #define ll long long #define ull unsigned ll #define ld long double #define bl __int128_t #define fi first #define se second #define vel vector #define vvel vector #define pll pair #define vepll vector #define vvepll vector #define ves vector #define vem vector #define vvem vector #define pmm pair #define vepmm vector #define cleout(i) cout<using PQ=priority_queue,greater>; // 上 右 下 左 vector di={-1, 0, 1, 0}; vector dj={ 0, 1, 0,-1}; vector dx={ 0, 1, 0,-1}; vector dy={ 1, 0,-1, 0}; vector ddx={ 1, 1, 1, 0, -1, -1, -1, 0 }; vector ddy={ 1, 0, -1, -1, -1, 0, 1, 1 }; ll inf=1000000000000000000;//1e18 // LLONG_MAX mt19937_64 rng((ull)chrono::steady_clock::now().time_since_epoch().count()); //[x^M]1/(1-x)^N=comb(N-1+M,M) struct info{ ll d; pll now; ll t; info(ll D=-1,pll NOW={-1,-1},ll T=inf){ d=D; now=NOW; t=T; } }; void _solve(){ ll H,W,x,y; cin>>H>>W>>x>>y; x--; y--; vector seen0(H,vvel(W,vel(8,inf))),seen1(H,vvel(W,vel(8,inf))); vvel a(H,vel(W,0)); rep(i,0,H){ string S; cin>>S; rep(j,0,W){ if(S[j]=='#')a[i][j]=1; } } deque qu; rep(i,0,8)seen0[x][y][i]=0; auto check=[&](pll now){ if(0<=now.fi&&now.finow.t+(now.d!=i)){ seen0[nnow.fi][nnow.se][i]=now.t+(now.d!=i); if(now.d==i){ info p(i,nnow,now.t); qu.push_front(p); }else{ info p(i,nnow,now.t+1); qu.push_back(p); } } }else{ if(seen1[nnow.fi][nnow.se][i]>now.t+(now.d!=i)){ seen1[nnow.fi][nnow.se][i]=now.t+(now.d!=i); if(now.d==i){ info p(i,nnow,now.t); qu.push_front(p); }else{ info p(i,nnow,now.t+1); qu.push_back(p); } } } } } } ll Q; cin>>Q; rep(i,0,Q){ ll dx,dy,t; cin>>dx>>dy>>t; dx--; dy--; if(flg){ cout<<"No\n"; continue; } if(t%2){ ll ans=inf; rep(j,0,8){ ans=min(ans,seen1[dx][dy][j]); } if(ans<=t)cout<<"Yes\n"; else cout<<"No\n"; }else{ ll ans=inf; rep(j,0,8){ ans=min(ans,seen0[dx][dy][j]); } if(ans<=t)cout<<"Yes\n"; else cout<<"No\n"; } } } int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); ll _; bool multitest=0; if(multitest)cin>>_; else _=1; rep(__,0,_){ _solve(); } }