#include <bits/stdc++.h>
using namespace std;
int N, M, Q;
bitset <1001> A[1001], CUT[1001];
int CNT[2001], IN[1001][1001], OUT[1001][1001];
int di[4] = {+1, +0, -1, +0};
int dj[4] = {+0, +1, +0, -1};
void BFS(int i, int j)
{
queue <int> QI, QJ;
QI.push(i);
QJ.push(j);
while(QI.size())
{
i = QI.front();
j = QJ.front();
CNT[i + j]--;
if(!CNT[i + j]) exit(333);
A[i][j] = 1;
IN[i][j] = OUT[i][j] = 0;
QI.pop();
QJ.pop();
for(int k = 0; k < 2; k++)
{
if(((i + di[k]) > N) || ((j + dj[k]) > M) || A[i + di[k]][j + dj[k]] || !IN[i + di[k]][j + dj[k]]) continue;
IN[i + di[k]][j + dj[k]]--;
if(!IN[i + di[k]][j + dj[k]]) {QI.push(i + di[k]); QJ.push(j + dj[k]);}
}
for(int k = 2; k < 4; k++)
{
if(((i + di[k]) < 1) || ((j + dj[k]) < 1) || A[i + di[k]][j + dj[k]] || !OUT[i + di[k]][j + dj[k]]) continue;
OUT[i + di[k]][j + dj[k]]--;
if(!OUT[i + di[k]][j + dj[k]]) {QI.push(i + di[k]); QJ.push(j + dj[k]);}
}
}
return;
}
int main()
{
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> N >> M;
int x;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++) {cin >> x; A[i][j] = x;}
}
IN[1][1] = 1;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
if(A[i][j]) continue;
IN[i][j] += bool(IN[i - 1][j]) + bool(IN[i][j - 1]);
}
}
OUT[N][M] = 1;
for(int i = N; i >= 1; i--)
{
for(int j = M; j >= 1; j--)
{
if(A[i][j] || !IN[i][j]) continue;
if(i < N) OUT[i][j] += bool(OUT[i + 1][j]);
if(j < M) OUT[i][j] += bool(OUT[i][j + 1]);
if(!OUT[i][j]) IN[i][j] = 0;
}
}
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
A[i][j] = A[i][j] || !IN[i][j] || !OUT[i][j];
CNT[i + j] += !A[i][j];
}
}
CUT[N][M] = 1;
cin >> Q;
int r, c;
while(Q--)
{
cin >> r >> c;
if(!A[r][c] && (CNT[r + c] == 1)) cout << "0\n";
else {cout << "1\n"; BFS(r, c);}
}
return 0;
}