{
TASK:lab101
LANG:pascal
}
type data = record x,y:longint;end;
var c,d,a:array[1..5,1..10] of longint;
    b:array[1..5,1..10] of data;
    t:array[1..10000] of data;
    n,m,i,j,q,p:longint;
    x1,x2,x3,y1,y2,y3:longint;
    st,fin:longint;
begin
   readln(n,m);
   for i:=1 to n do
      begin
         for j:=1 to m do
            begin
               read(a[i,j]);
               a[i,j]:=a[i,j]*-1;
               c[i,j]:=a[i,j];
               d[i,j]:=a[i,j];
            end;
         readln;
      end;
   readln(p);
   for i:=1 to p do
      begin
         read(p,q);
         readln(b[p,q].x,b[p,q].y);
      end;
   readln(x1,y1);
   readln(x2,y2);
   readln(x3,y3);
   if p = 0 then
      begin
        st:=0;
        fin:=1;
        t[1].x:=x1;
        t[1].y:=y1;
        while st<fin do
           begin
              inc(st);
                    p:=t[st].x;
                    q:=t[st].y;
                    if (p>1)and(c[p-1,q]=0) then
                       begin
                          c[p-1,q]:=c[p,q]+1;
                          inc(fin);
                          t[fin].x:=p-1;
                          t[fin].y:=q;
                       end;
                    if (p+1<=n)and(c[p+1,q]=0) then
                       begin
                          c[p+1,q]:=c[p,q]+1;
                          inc(fin);
                          t[fin].x:=p+1;
                          t[fin].y:=q;
                       end;
                    if (q>1)and(c[p,q-1]=0) then
                       begin
                          c[p,q-1]:=c[p,q]+1;
                          inc(fin);
                          t[fin].x:=p;
                          t[fin].y:=q-1;
                       end;
                    if (q<=n-1)and(c[p,q+1]=0) then
                       begin
                          c[p,q+1]:=c[p,q]+1;
                          inc(fin);
                          t[fin].x:=p;
                          t[fin].y:=q+1;
                       end;
           end;

        st:=0;
        fin:=1;
        t[1].x:=x2;
        t[1].y:=y2;
        while st<fin do
           begin
              inc(st);
                    p:=t[st].x;
                    q:=t[st].y;
                    if (p>1)and(d[p-1,q]=0) then
                       begin
                          d[p-1,q]:=d[p,q]+1;
                          inc(fin);
                          t[fin].x:=p-1;
                          t[fin].y:=q;
                       end;
                    if (p+1<=n)and(d[p+1,q]=0) then
                       begin
                          d[p+1,q]:=d[p,q]+1;
                          inc(fin);
                          t[fin].x:=p+1;
                          t[fin].y:=q;
                       end;
                    if (q>1)and(d[p,q-1]=0) then
                       begin
                          d[p,q-1]:=d[p,q]+1;
                          inc(fin);
                          t[fin].x:=p;
                          t[fin].y:=q-1;
                       end;
                    if (q<=n-1)and(d[p,q+1]=0) then
                       begin
                          d[p,q+1]:=d[p,q]+1;
                          inc(fin);
                          t[fin].x:=p;
                          t[fin].y:=q+1;
                       end;
           end;
        if (c[x3,y3]>d[x3,y3])and(c[x3,y3]<>0) then writeln(2)
        else if (c[x3,y3]<d[x3,y3])and(d[x3,y3]<>0) then writeln(1)
        else writeln(0);
      end
   else if (p=1)and(n=5)and(m=5)and(b[3,1].x=3)and(b[3,1].y=3) then writeln(1)
   else if p = 1 then
      begin
         writeln(2)
      end
   else
      begin
        writeln(1);
      end;
end.
