#include<stdio.h>
int map[1001][1001];
int b[1001][1001];
int ans[1001];
int n, m;
int color = 0;
int s[4][2] = { {1,0},{0,1},{-1,0},{0,-1} };
void dfs(int x,int y,int a) {
if (x<1||x>n||y<1||y>n||b[x][y])return;
ans[color]++;
b[x][y] = color;
for (int i = 0; i < 4; i++) {
if (a == 1&&map[x+s[i][0]][y+s[i][1]]==0)
dfs(x + s[i][0], y + s[i][1], 0);
if(a == 0 && map[x + s[i][0]][y + s[i][1]] == 1) dfs(x + s[i][0], y + s[i][1], 1);
}
}
int main()
{
scanf("%d %d", &n,&m);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <=n; j++) {
scanf("%d", &map[i][j]);
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (!b[1001][1001]) {
color++;
dfs(i, j,map[i][j]);
}
}
}
for (int i = 1; i <= m; i++) {
int x, y;
scanf("%d %d", &x, &y);
printf("%d\n",ans[b[x][y]]);
}
return 0;
}