#include <iostream>
using namespace std;

char F[102][102];

int DFS_W(int Y,int X,int Xg,int Yg,int c){
  if(F[Y][X]!='w'){
    return c;
  }
  F[Y][X]='.';
  DFS_W(Y-1,X  ,Xg,Yg,c);
  DFS_W(Y  ,X+1,Xg,Yg,c);
  DFS_W(Y+1,X  ,Xg,Yg,c);
  DFS_W(Y  ,X-1,Xg,Yg,c);
  if(Y==Xg&&X==Yg){
    c++;
  }
}
int DFS_Y(int Y,int X,int Xg,int Yg,int c){
  if(F[Y][X]!='y'){
    return c;
  }
  F[Y][X]='.';
  DFS_Y(Y-1,X  ,Xg,Yg,c);
  DFS_Y(Y  ,X+1,Xg,Yg,c);
  DFS_Y(Y+1,X  ,Xg,Yg,c);
  DFS_Y(Y  ,X-1,Xg,Yg,c);
  if(Y==Xg&&X==Yg){
    c++;
  }
}
int DFS_G(int Y,int X,int Xg,int Yg,int c){
  if(F[Y][X]!='g'){
    return c;
  }
  F[Y][X]='.';
  DFS_G(Y-1,X  ,Xg,Yg,c);
  DFS_G(Y  ,X+1,Xg,Yg,c);
  DFS_G(Y+1,X  ,Xg,Yg,c);
  DFS_G(Y  ,X-1,Xg,Yg,c);
  if(Y==Xg,X==Yg){
    c++;
  }
}
int DFS_B(int Y,int X,int Xg,int Yg,int c){
  if(F[Y][X]!='b'){
    return c;
  }
  F[Y][X]='.';
  DFS_B(Y-1,X  ,Xg,Yg,c);
  DFS_B(Y  ,X+1,Xg,Yg,c);
  DFS_B(Y+1,X  ,Xg,Yg,c);
  DFS_B(Y  ,X-1,Xg,Yg,c);
  if(Y==Xg,X==Yg){
    c++;
  }
}
  int DFS_R(int Y,int X,int Xg,int Yg,int c){
  if(F[Y][X]!='r'){
    return c;
  }
  F[Y][X]='.';
  DFS_R(Y-1,X  ,Xg,Yg,c);
  DFS_R(Y  ,X+1,Xg,Yg,c);
  DFS_R(Y+1,X  ,Xg,Yg,c);
  DFS_R(Y  ,X-1,Xg,Yg,c);
  if(Y==Xg,X==Yg){
    c++;
  }
}

int main(){
  int c[5];
  int d[1];
  int w;
  int h;
  int xs;
  int ys;
  int xg;
  int yg;
  int n;
  int x[n];
  int y[n];
  cin>>w>>h;
  while(w!=0){
    int a=0;
    int b=0;
    cin>>xs>>ys;
    cin>>xg>>yg;
    cin>>n;
    for(int i=0;i<n;i++){
      cin>>c[i]>>d[i]>>x[i]>>y[i];
        int a=0;
        int b=0;
      if(d[i]==0){
        if(c[i]==1){
          for(int z=0;z<4;z++){
            F[y[i]][x[i]+z] ='w';
            F[y[i]+1][x[i]+z] ='w';
          }
        }else if(c[i]==2){
          for(int z=0;z<4;z++){
            F[y[i]][x[i]+z] ='y';
            F[y[i]+1][x[i]+z] ='y';
          }
        }else if(c[i]==3){
          for(int z=0;z<4;z++){
            F[y[i]][x[i]+z] ='g';
            F[y[i]+1][x[i]+z] ='g';
          }
        }else if(c[i]==4){
          for(int z=0;z<4;z++){
            F[y[i]][x[i]+z] ='b';
            F[y[i]+1][x[i]+z] ='b';
          }
        }else if(c[i]==5){
          for(int z=0;z<4;z++){
            F[y[i]][x[i]+z] ='r';
            F[y[i]+1][x[i]+z] ='r';
          }
        }
      }else if(d[i]==1){
        if(c[i]==1){
          for(int z=0;z<4;z++){
            F[y[i]+z][x[i]] ='w';
            F[y[i]+z][x[i]+1] ='w';
          }
        }else if(c[i]==2){
          for(int z=0;z<4;z++){
            F[y[i]+z][x[i]] ='y';
            F[y[i]+z][x[i]+1] ='y';
          }
        }else if(c[i]==3){
          for(int z=0;z<4;z++){
            F[y[i]+z][x[i]] ='g';
            F[y[i]+z][x[i]+1] ='g';
          }
        }else if(c[i]==4){
          for(int z=0;z<4;z++){
            F[y[i]+z][x[i]] ='b';
            F[y[i]+z][x[i]+1] ='b';
          }
        }else if(c[i]==5){
          for(int z=0;z<4;z++){
            F[y[i]+z][x[i]] ='r';
            F[y[i]+z][x[i]+1] ='r';
          }
        }
      }
    }
    int cnt=0;
    if(F[ys][xs]=='w'){
      cnt=DFS_W(ys,xs,xg,yg,cnt);
    }else if(F[ys][xs]=='y'){
      cnt=DFS_Y(ys,xs,xg,yg,cnt);
    }else if(F[ys][xs]=='g'){
      cnt=DFS_G(ys,xs,xg,yg,cnt);
    }else if(F[ys][xs]=='b'){
      cnt=DFS_B(ys,xs,xg,yg,cnt);
    }else if(F[ys][xs]=='r'){
      cnt=DFS_R(ys,xs,xg,yg,cnt);
    }
    if(cnt==0){
      cout<<"NG"<<endl;
    }else if(cnt==1){
      cout<<"OK"<<endl;
    }
    cin>>w>>h;
  }
  return 0;
}
