#include<bits/stdc++.h>
using namespace std;
struct node
{
int x,y;
};
int n,m,a[1009][1009],vis[1009][1009],ans;
int dy[4]={0,0,1,-1};
int dx[4]={1,-1,0,0};
node q[100009];
void bfs(int a,int b)
{
memset(vis,0,sizeof(vis));
int f,r;
f=r=0;
r++;
q[r].x=a;
q[r].y=b;
vis[a][b]=1;
ans=1;
while(f<r)
{
node p=q[++f];
for(int i=0;i<=3;i++)
{
int xx=p.x+dx[i];
int yy=p.y+dy[i];
if(xx<1||yy<1||xx>n||yy>n)continue;
if(vis[xx][yy]==0&&((a[p.x][p.y]==1&&a[xx][yy]==0)||(a[p.x][p.y]==0&&a[xx][yy]==1)))//它提示这错了,怎么改??
{
vis[xx][yy]=1;
r++;
q[r].x=xx;
q[r].y=yy;
ans++;
}
}
}
cout<<ans<<endl;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=m;i++)
{
int a,b;
cin>>a>>b;
bfs(a,b);
}
}
}