{
TASK:lab101
LANG:PASCAL
}

var
	a 		: array[0..11, 0..11] of integer;
	m,n		: integer;

	sp		: array[1..32,1..4] of integer;
	p		: integer;


	w_in		: array[1..11, 1..11] of integer;

	pos		: array[1..10, 1..10] of integer;

	i,j,k		: integer;

	r1x,r1y,r2x,r2y,dx,dy : integer;

procedure dfs(i,j,no 	: integer);
begin
        if pos[i,j]=no then
           exit;
	pos[i,j]:=no;
	w_in[i,j]:=no;

	if a[i,j+1]=0 then
		dfs(i,j+1,no);
	if a[i+1,j]=0 then
		dfs(i+1,j,no);
	if a[i-1,j]=0 then
		dfs(i-1,j,no);
	if a[i,j-1]=0 then
		dfs(i,j-1,no);
end;

begin
	for i :=0 to 11 do
		for j := 0 to 11 do
			a[i,j]:=1;
	readln(n,m);
	for i := 1 to N do
		begin
			for j:= 1 to M do
				read(a[i,j]);
			readln;
		end;
	readln(p);
	for i := 1 to p do
		readln(sp[i,1], sp[i,2], sp[i,3], sp[i,4]);
	readln(r1x,r1y);
	readln(r2x,r2y);
	readln(dx,dy);
        dfs(r1x,r1y,1);
        dfs(r2x,r2y,1);
	for i := 1 to p do
		begin

			for i := 1 to p do
				if (a[sp[i,3],sp[i,4]]=1) and (w_in[sp[i,1],sp[i,2]]>0) then
					a[sp[i,3],sp[i,4]]:=0;
                        dfs(r1x,r1y,p*2+1);
			dfs(r2x,r2y,P*2);
		end;
        if w_in[dx, dy]=0 then
           writeln(0)
        else
	    writeln((w_in[dx,dy] mod 2)+1);
end.