#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) begin(a),end(a)
using vi = vector<int>;
const int mxN = (int)1501;
const int MXN = mxN*mxN;
int X[] = {-1,0,1,0};
int Y[] = {0,1,0,-1};
string a[mxN];
bitset<mxN> vis[4][mxN];
int n, m, q, sx, sy, bx, by;
int dfs_tim;
vi v, adj[MXN];
bitset<MXN> BCC;
int st[MXN], low[MXN];
int node(int x, int y){ return x*1500+y+1; }
void ae(vi adj[], int a, int b, bool undi=1){
adj[a].pb(b); if(undi) adj[b].pb(a);
}
int ST;
void dfsCut(int s, int p){ // fix
if(!sz(adj[s])){ if(!p) BCC[s]=1; return; }
st[s] = low[s] = ++dfs_tim; v.pb(s);
int num = 0, child = 0, x;
for(auto u : adj[s]){
if(u==p) continue;
if(!st[u]){
dfsCut(u,s); child++;
low[s]=min(low[s],low[u]);
if(low[u] >= st[s]){
num++; if(!p) BCC[s]=1;
vi xd; xd.clear();
bool good = 0;
do{
x=v.back(); v.pop_back();
if(x==ST) good=1;
if(!p) BCC[x]=1;
else xd.pb(x);
} while(x!=u);
if(good)for(auto u : xd)BCC[u]=1;
}
}
else low[s]=min(low[s],st[u]);
}
}
bool canGo(int sx, int sy, int dx, int dy, int bx, int by){
if(sx<0 or sy<0 or sx>=n or sy>=m or a[sx][sy]=='#') return 0;
if(dx<0 or dy<0 or dx>=n or dy>=m or a[dx][dy]=='#') return 0;
int a = node(sx,sy), b = node(dx,dy), c = node(bx,by);
return BCC[a] and BCC[b]; // doesn't work right
}
void recur(int x, int y, int d){
int mx = x+X[d], my = y+Y[d];
if(x<0 or y<0 or x>=n or y>=m) return;
if(mx<0 or my<0 or mx>=n or my>=m) return;
if(a[x][y]=='#' or a[mx][my]=='#' or vis[d][x][y]) return;
vis[d][x][y] = 1; recur(x+X[(d+2)%4],y+Y[(d+2)%4],d);
for(int nd = 0; nd < 4; nd++){
int nx = x+X[nd], ny = y+Y[nd];
if(canGo(mx,my,nx,ny,x,y)) recur(x,y,nd);
}
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(0);
ifstream cin("pushabox.in");
ofstream cout("pushabox.out");
cin >> n >> m >> q;
for(int i = 0; i < n; i++){
cin >> a[i];
for(int j = 0; j < m; j++){
if(a[i][j]=='A') sx=i,sy=j;
if(a[i][j]=='B') bx=i,by=j;
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(a[i][j]=='#') continue;
for(int d = 0; d < 4; d++){
int ni = i+X[d], nj = j+Y[d];
if(ni<0 or nj<0 or ni>=n or nj>=m or a[ni][nj]=='#') continue;
ae(adj,node(i,j),node(ni,nj),0);
}
}
}
dfsCut(node(sx,sy),0);
for(int d = 0; d < 4; d++)
if(canGo(sx,sy,bx+X[d],by+Y[d],bx,by))
recur(bx,by,d);
while(q--){
int x, y, ok = 0; cin >> x >> y; x--, y--;
for(int i = 0; i < 4; i++) ok|=vis[i][x][y];
cout << (ok?"YES":"NO") << "\n";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgc3ooYSkgKGludClhLnNpemUoKQojZGVmaW5lIGFsbChhKSBiZWdpbihhKSxlbmQoYSkKdXNpbmcgdmkgPSB2ZWN0b3I8aW50PjsKY29uc3QgaW50IG14TiA9IChpbnQpMTUwMTsKY29uc3QgaW50IE1YTiA9IG14TipteE47CmludCBYW10gPSB7LTEsMCwxLDB9OwppbnQgWVtdID0gezAsMSwwLC0xfTsKCnN0cmluZyBhW214Tl07CmJpdHNldDxteE4+IHZpc1s0XVtteE5dOwppbnQgbiwgbSwgcSwgc3gsIHN5LCBieCwgYnk7CgppbnQgZGZzX3RpbTsKdmkgdiwgYWRqW01YTl07CmJpdHNldDxNWE4+IEJDQzsKaW50IHN0W01YTl0sIGxvd1tNWE5dOwoKaW50IG5vZGUoaW50IHgsIGludCB5KXsgcmV0dXJuIHgqMTUwMCt5KzE7IH0KCnZvaWQgYWUodmkgYWRqW10sIGludCBhLCBpbnQgYiwgYm9vbCB1bmRpPTEpewoJYWRqW2FdLnBiKGIpOyBpZih1bmRpKSBhZGpbYl0ucGIoYSk7Cn0KCmludCBTVDsKdm9pZCBkZnNDdXQoaW50IHMsIGludCBwKXsgLy8gZml4CglpZighc3ooYWRqW3NdKSl7IGlmKCFwKSBCQ0Nbc109MTsgcmV0dXJuOyB9CglzdFtzXSA9IGxvd1tzXSA9ICsrZGZzX3RpbTsgdi5wYihzKTsKCWludCBudW0gPSAwLCBjaGlsZCA9IDAsIHg7Cglmb3IoYXV0byB1IDogYWRqW3NdKXsKCQlpZih1PT1wKSBjb250aW51ZTsKCQlpZighc3RbdV0pewoJCQlkZnNDdXQodSxzKTsgY2hpbGQrKzsKCQkJbG93W3NdPW1pbihsb3dbc10sbG93W3VdKTsKCQkJaWYobG93W3VdID49IHN0W3NdKXsKCQkJCW51bSsrOyBpZighcCkgQkNDW3NdPTE7CgkJCQl2aSB4ZDsgeGQuY2xlYXIoKTsKCQkJCWJvb2wgZ29vZCA9IDA7CgkJCQlkb3sKCQkJCQl4PXYuYmFjaygpOyB2LnBvcF9iYWNrKCk7CgkJCQkJaWYoeD09U1QpIGdvb2Q9MTsKCQkJCQlpZighcCkgQkNDW3hdPTE7CgkJCQkJZWxzZSB4ZC5wYih4KTsKCQkJCX0gd2hpbGUoeCE9dSk7CgkJCQlpZihnb29kKWZvcihhdXRvIHUgOiB4ZClCQ0NbdV09MTsKCQkJfQoJCX0KCQllbHNlIGxvd1tzXT1taW4obG93W3NdLHN0W3VdKTsKCX0KfQoKYm9vbCBjYW5HbyhpbnQgc3gsIGludCBzeSwgaW50IGR4LCBpbnQgZHksIGludCBieCwgaW50IGJ5KXsKCWlmKHN4PDAgb3Igc3k8MCBvciBzeD49biBvciBzeT49bSBvciBhW3N4XVtzeV09PScjJykgcmV0dXJuIDA7CglpZihkeDwwIG9yIGR5PDAgb3IgZHg+PW4gb3IgZHk+PW0gb3IgYVtkeF1bZHldPT0nIycpIHJldHVybiAwOwoJaW50IGEgPSBub2RlKHN4LHN5KSwgYiA9IG5vZGUoZHgsZHkpLCBjID0gbm9kZShieCxieSk7CglyZXR1cm4gQkNDW2FdIGFuZCBCQ0NbYl07IC8vIGRvZXNuJ3Qgd29yayByaWdodAp9Cgp2b2lkIHJlY3VyKGludCB4LCBpbnQgeSwgaW50IGQpewoJaW50IG14ID0geCtYW2RdLCBteSA9IHkrWVtkXTsKCWlmKHg8MCBvciB5PDAgb3IgeD49biBvciB5Pj1tKSByZXR1cm47CglpZihteDwwIG9yIG15PDAgb3IgbXg+PW4gb3IgbXk+PW0pIHJldHVybjsKCWlmKGFbeF1beV09PScjJyBvciBhW214XVtteV09PScjJyBvciB2aXNbZF1beF1beV0pIHJldHVybjsKCXZpc1tkXVt4XVt5XSA9IDE7IHJlY3VyKHgrWFsoZCsyKSU0XSx5K1lbKGQrMiklNF0sZCk7Cglmb3IoaW50IG5kID0gMDsgbmQgPCA0OyBuZCsrKXsKCQlpbnQgbnggPSB4K1hbbmRdLCBueSA9IHkrWVtuZF07CgkJaWYoY2FuR28obXgsbXksbngsbnkseCx5KSkgcmVjdXIoeCx5LG5kKTsKCX0KfQoKaW50IG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOwoJaWZzdHJlYW0gY2luKCJwdXNoYWJveC5pbiIpOwoJb2ZzdHJlYW0gY291dCgicHVzaGFib3gub3V0Iik7CgljaW4gPj4gbiA+PiBtID4+IHE7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQljaW4gPj4gYVtpXTsKCQlmb3IoaW50IGogPSAwOyBqIDwgbTsgaisrKXsKCQkJaWYoYVtpXVtqXT09J0EnKSBzeD1pLHN5PWo7CgkJCWlmKGFbaV1bal09PSdCJykgYng9aSxieT1qOwoJCX0KCX0KCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewoJCWZvcihpbnQgaiA9IDA7IGogPCBuOyBqKyspewoJCQlpZihhW2ldW2pdPT0nIycpIGNvbnRpbnVlOwoJCQlmb3IoaW50IGQgPSAwOyBkIDwgNDsgZCsrKXsKCQkJCWludCBuaSA9IGkrWFtkXSwgbmogPSBqK1lbZF07CgkJCQlpZihuaTwwIG9yIG5qPDAgb3Igbmk+PW4gb3Igbmo+PW0gb3IgYVtuaV1bbmpdPT0nIycpIGNvbnRpbnVlOwoJCQkJYWUoYWRqLG5vZGUoaSxqKSxub2RlKG5pLG5qKSwwKTsKCQkJfQoJCX0KCX0KCWRmc0N1dChub2RlKHN4LHN5KSwwKTsKCWZvcihpbnQgZCA9IDA7IGQgPCA0OyBkKyspCgkJaWYoY2FuR28oc3gsc3ksYngrWFtkXSxieStZW2RdLGJ4LGJ5KSkKCQkJcmVjdXIoYngsYnksZCk7Cgl3aGlsZShxLS0pewoJCWludCB4LCB5LCBvayA9IDA7IGNpbiA+PiB4ID4+IHk7IHgtLSwgeS0tOwoJCWZvcihpbnQgaSA9IDA7IGkgPCA0OyBpKyspIG9rfD12aXNbaV1beF1beV07CgkJY291dCA8PCAob2s/IllFUyI6Ik5PIikgPDwgIlxuIjsKCX0KfQo=