#include<bits/stdc++.h>
using namespace std;
const int MAXN=1024;
bitset<MAXN> F[MAXN*2][MAXN];
pair<int,int> Q[MAXN*MAXN];
bool ck[MAXN*2],ans[MAXN*MAXN];
int vi[MAXN*2][MAXN],cnt[MAXN*2];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m,q;
cin>>n>>m;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
{
int res;
cin>>res;
F[i+j][0][j]=1-res;
}
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>Q[i].first>>Q[i].second;
int sum=Q[i].first+Q[i].second;
cnt[sum]++,F[sum][cnt[sum]]=F[sum][cnt[sum]-1];
F[sum][cnt[sum]][Q[i].second]=0,vi[sum][cnt[sum]]=i;
ans[i]=true;
}
int st=1;
while(st<=q)
{
int l=st,r=q,pos=q+1;
while(l<=r)
{
int mid=(l+r)/2;
bitset<MAXN> dp;
dp[1]=1;
for(int i=3;i<=n+m;i++)
{
dp|=(dp<<1);
if(!ck[i])
{
int pos=upper_bound(vi[i],vi[i]+cnt[i]+1,mid)-vi[i]-1;
dp&=F[i][pos];
}
else dp&=F[i][cnt[i]];
if(dp==0) break;
}
if(dp==0) r=mid-1,pos=mid;
else l=mid+1;
}
if(pos==q+1) break;
int sum=Q[pos].first+Q[pos].second;
ck[sum]=true,F[sum][cnt[sum]][Q[pos].second]=1;
ans[pos]=false,st=pos+1;
}
for(int i=1;i<=q;i++) cout<<ans[i]<<"\n";
}