#include <iostream>

using namespace std;

int w, h;
int xg, yg;
int data[101][101];
int dx[]={0, 1, 0, -1};
int dy[]={-1, 0, 1, 0};
bool visited[101][101];
bool dfs(int, int, int);

main(){
  while(1){
    cin >> w >> h;
    if(w==0 && h==0) break;

    int xs, ys, n;
    cin >> xs >> ys;
    cin >> xg >> yg;
    cin >> n;
    for(int i=0;i<=h;i++){
      for(int j=0;j<=w;j++){
	data[i][j]=0;
      }
    }
    for(int i=0;i<n;i++){
      int c, d, x, y;
      cin >> c >> d >> x >> y;
      if(d==0){
	for(int i=0;i<2;i++){
	  for(int j=0;j<4;j++){
	    data[i+y][j+x]=c;
	  }
	}
      }else{
	for(int i=0;i<4;i++){
	  for(int j=0;j<4;j++){
	    data[i+y][j+x]=c;
	  }
	}
      }
    }
    for(int i=0;i<=h;i++){
      for(int j=0;j<=w;j++){
	visited[i][j]=false;
      }
    }

    if(dfs(ys, xs, data[ys][xs])){
      cout << "OK" << endl;
    }else{
      cout << "NG" << endl;
    }
  }
  return 0;
}

bool dfs(int y, int x, int c){
  if(y==yg && x==xg){
    return true;
  }
  visited[y][x]=true;
  bool ans=false;
  for(int i=0;i<4;i++){
    int ty=y+dy[i];
    int tx=x+dx[i];
    if(ty>0 && ty<=h){
      if(tx>0 && tx<=w){
	if(data[ty][tx]==c && !visited[ty][tx]){
	  ans=dfs(ty, tx, c);
	  if(ans) break;
	}
      }
    }
  }
  return ans;
}