#include<stdio.h>#include<stdbool.h>#include<stdlib.h>#include<string.h>#define SIZE 100int grid[SIZE+2][SIZE+2];bool mark[SIZE+2][SIZE+2];int click(int x1,int y1,int x2,int y2,int maxx,int maxy){if(x1==x2&&y1==y2)return 0;if(grid[x1][y1]!=grid[x2][y2])return 0;if(!grid[x1][y1])return 0;int rec1,rec2,rec3,rec4,i,j,v;memset(mark,0,sizeof(mark));mark[x1][y1]=mark[x2][y2]=1;v=grid[x1][y1];grid[x1][y1]=grid[x2][y2]=0;for(i=1;x1+i<=maxx+1&&!grid[x1+i][y1];i++)if(mark[x1+i][y1])return 2;else mark[x1+i][y1]=1;rec1=x1+i-1;for(i=1;x1-i>=0&&!grid[x1-i][y1];i++)if(mark[x1-i][y1])return 2;else mark[x1-i][y1]=1;rec2=x1-i+1;for(i=1;y1+i<=maxy+1&&!grid[x1][y1+i];i++)if(mark[x1][y1+i])return 2;else mark[x1][y1+i]=1;rec3=y1+i-1;for(i=1;y1-i>=0&&!grid[x1][y1-i];i++)if(mark[x1][y1-i])return 2;else mark[x1][y1-i]=1;rec4=y1-i+1;for(i=1;x2+i<=maxx+1&&!grid[x2+i][y2];i++)if(mark[x2+i][y2])return 2;else mark[x2+i][y2]=1;for(i=1;x2-i>=0&&!grid[x2-i][y2];i++)if(mark[x2-i][y2])return 2;else mark[x2-i][y2]=1;for(i=1;y2+i<=maxy+1&&!grid[x2][y2+i];i++)if(mark[x2][y2+i])return 2;else mark[x2][y2+i]=1;for(i=1;y2-i>=0&&!grid[x2][y2-i];i++)if(mark[x2][y2-i])return 2;else mark[x2][y2-i]=1;for(i=rec2;i<=rec1;i++){if(i==x1)continue;for(j=1;y1+j<=maxy+1&&!grid[i][y1+j];j++)if(mark[i][y1+j])return 2;for(j=1;y1-j>=0&&!grid[i][y1-j];j++)if(mark[i][y1-j])return 2;}for(i=rec4;i<=rec3;i++){if(i==y1)continue;for(j=1;x1+j<=maxx+1&&!grid[x1+j][i];j++)if(mark[x1+j][i])return 2;for(j=1;x1-j>=0&&!grid[x1-j][i];j++)if(mark[x1-j][i])return 2;}grid[x1][y1]=grid[x2][y2]=v;return 0;}int main(void){int nclick,n,m;int x1,x2,y1,y2,i,j;int dis=0;while(scanf("%d%d",&n,&m)!=EOF&&m&&n){dis=0;memset(grid,0,sizeof(grid));for(i=1;i<=n;i++)for(j=1;j<=m;j++)scanf("%d",grid[i]+j);scanf("%d",&nclick);while(nclick--){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);dis+=click(x1,y1,x2,y2,n,m);}printf("%dn",dis);}return 0;}


