#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
#define fir first
#define sec second
#define pb push_back
#pragma GCC optimize("O3,unroll-loops")
int n,m;
int c[1002][1002];
bool vis[1002][1002];
int cnt[2004];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
bool ins(int x,int y){
return (x>0 && y>0 && x<=n && y<=m);
}
int cek(int x,int y){
return !(ins(x,y) && !vis[x][y]);
}
void bfs(int a,int b){
queue<pair<int,int> >qu;
qu.push({a,b});
if(vis[a][b])return;
while(qu.size()){
auto [x,y]=qu.front(); qu.pop();
vis[x][y]=true;
cnt[x+y]--;
for(int q=0;q<4;q++){
int nx=x+dx[q],ny=y+dy[q];
if(!ins(nx,ny) || vis[nx][ny])continue;
if(nx==1 && ny==1)continue;
if(nx==n && ny==m)continue;
if(cek(nx-1,ny) && cek(nx,ny-1)){
vis[nx][ny]=true;
qu.push({nx,ny}); continue;
}
if(cek(nx+1,ny) && cek(nx,ny+1)){
vis[nx][ny]=true;
qu.push({nx,ny}); continue;
}
}
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int q=1;q<=n;q++){
for(int w=1;w<=m;w++){
cin>>c[q][w];
cnt[q+w]++;
}
}
for(int q=1;q<=n;q++){
for(int w=1;w<=m;w++){
if(c[q][w])bfs(q,w);
}
}
int qu;
cin>>qu;
while(qu--){
int x,y; cin>>x>>y;
if(vis[x][y] || cnt[x+y]>1){
cout<<1<<endl;
bfs(x,y);
}
else{
cout<<0<<endl;
}
}
}