#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n,m,sx,sy,visited[1005][1005],a[1005][1005],cnt;
char c;
int dx[10]={ 0, 1, 0,-1, 0};
int dy[10]={ 0, 0, 1, 0,-1};
void bfs(){
queue<pair<int,int>> q;
q.push({sx,sy});
visited[sx][sy]=1;
cnt=1;
while(!q.empty()){
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int i=1;i<=4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(!a[x][y]){
if(nx>0&&nx<=n&&ny>0&&ny<=n&&!visited[nx][ny]&&a[nx][ny]){
q.push({nx,ny});
visited[nx][ny]=1;
cnt++;
}
}
if(a[x][y]){
if(nx>0&&nx<=n&&ny>0&&ny<=n&&!visited[nx][ny]&&!a[nx][ny]){
q.push({nx,ny});
visited[nx][ny]=1;
cnt++;
}
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>c;
a[i][j]=c-'0';
}
}
for(int i=1;i<=m;i++){
cin>>sx>>sy;
memset(visited,0,sizeof(visited));
bfs();
cout<<cnt<<"\n";
}
return 0;
}
点3,10,11+民间数据点一TLE