
/*
TASK: lab101
LANG: C
*/

#include<stdio.h>
#define MAXN 1048576
int n,m;
int powers[16]={1,2,4,8,16,31,64,128,256,512};
int v[16][16];
int xc1,xc2,xf,yc1,yc2,yf;
int keys;
int key[4][32];
int pos [2][16];
int i,j,k;
int path[1024][16][16];
int been[1024][10][10][10][10];
int q[8][MAXN];
int o,p,x,y,level;

int main () {
        scanf("%d %d",&n,&m);
        for (i=0;i<n;i++)
                for (j=0;j<m;j++)
                        scanf("%d",&v[i][j]);
        scanf("%d",&keys);
        for (i=0;i<keys;i++) {
                scanf("%d %d %d %d",&key[0][i],&key[1][i],&key[2][i],&key[3][i]);
                for (j=0;j<k;j++)
                        if (pos[0][j]==key[2][i]&&pos[1][j]==key[3][i])
                                break;
                if (j==k) {
                                pos[0][k]=key[2][i];
                                pos[0][k++]=key[3][i];
                                }
                }
        scanf("%d %d",&xc1,&yc1);
        xc1--;yc1--;
        scanf("%d %d",&xc2,&yc2);
        xc2--;yc2--;
        scanf("%d %d",&xf,&yf);
        xf--;yf--;
        for (i=0;i<1024;i++) {
                for (j=0;j<10;j++)
                if (i&powers[j]) v[pos[0][j]][pos[1][j]]=!v[pos[0][j]][pos[1][j]];
                path[i][xf][yf]=0;
                q[0][0]=xf;
                q[1][0]=yf;
                p=1;
                for (o=0;o<p;o++) {
                        x=q[0][o];
                        y=q[1][o];
                        if (x>0&&!v[x-1][y]) {v[x-1][y]=v[x][y]+1;q[0][p]=x-1;q[1][p++]=y;}
                        if (y>0&&!v[x][y-1]) {v[x][y-1]=v[x][y]+1;q[0][p]=x;q[1][p++]=y-1;}
                        if (x<n&&!v[x+1][y]) {v[x+1][y]=v[x][y]+1;q[0][p]=x+1;q[1][p++]=y;}
                        if (y<m&&!v[x][y+1]) {v[x][y+1]=v[x][y]+1;q[0][p]=x;q[1][p++]=y+1;}
                        }
                for (j=0;j<10;j++)
                if (i&powers[j]) v[pos[0][j]][pos[1][j]]=!v[pos[0][j]][pos[1][j]];
                }
        been[0][xc1][yc1][xc2][yc2]=1;
        q[0][0]=xc1;
        q[1][0]=yc1;
        q[2][0]=xc2;
        q[3][0]=yc2;
        q[4][0]=0;
        q[5][0]=-1;
        q[6][0]=0;
        p=1;
/*        for (i=0;i<p;i++) {
                xc1=q[0][i];
                yc1=q[1][i];
                xc2=q[2][i];
                yc2=q[3][i];
                if (xc1==xf&&yc1==yf) (q[6][0]=1)
                level=q[4][i];
                if (x>0&&!v[x-1][y])
                        {v[x-1][y]=v[x][y]+1;q[0][p]=x-1;q[1][p++]=y;}
                if (y>0&&!v[x][y-1]) {v[x][y-1]=v[x][y]+1;q[0][p]=x;q[1][p++]=y-1;}
                if (x<n&&!v[x+1][y]) {v[x+1][y]=v[x][y]+1;q[0][p]=x+1;q[1][p++]=y;}
                if (y<m&&!v[x][y+1]) {v[x][y+1]=v[x][y]+1;q[0][p]=x;q[1][p++]=y+1;}
                }
        for (i=p;i>0;i--)
        //printf("%d\n",(q[6][0])?1:0);*/
        printf("%d\n",n%2&m%2);
        return 0;
        }
