//メモリ数確認したか?
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<algorithm>
#include<cstdlib>
using namespace std;
typedef long long int ll;
bool s[100][100];
int w,h,xs,ys,xg,yg,n;
int boad[100][100];
int c,d,x,y;
int X[4]={-1,0,0,1};
int Y[4]={0,-1,1,0};
void f(int x,int y){
	s[x][y]=true;
	for(int i=0;i<4;i++){
		if(x+X[i]>=0&&x+X[i]<h&&y+Y[i]>=0&&y+Y[i]<w){
			if(!s[x+X[i]][y+Y[i]]){
				if(boad[x][y]==boad[x+X[i]][y+Y[i]]){
				f(x+X[i],y+Y[i]);
				}
			}
		}
	}
}
int main()
{
	while(true){
	for(int i=0;i<100;i++){
		for(int j=0;j<100;j++){
			boad[i][j]=0;
			s[i][j]=false;
		}
	}
	scanf("%d%d",&w,&h);
	if(w==0&&h==0)return 0;
	scanf("%d%d%d%d%d",&xs,&ys,&xg,&yg,&n);
	for(int i=0;i<n;i++){
		scanf("%d%d%d%d",&c,&d,&x,&y);
		if(d==1){
			for(int j=x-1;j<x+2-1;j++){
				for(int k=y-1;k<y+4-1;k++){
					boad[k][j]=c;
				}
			}
		}

		else{
			for(int j=x-1;j<x+4-1;j++){
				for(int k=y-1;k<y+2-1;k++){
					boad[k][j]=c;
				}
			}
		}
	}
	
	if(boad[xs-1][ys-1]==0||boad[xg-1][yg-1]==0){
		printf("NG\n");
		goto a;
	}
	f(xs-1,ys-1);
	
	if(s[xg-1][yg-1]){
		printf("OK\n");
	}
	else printf("NG\n");
a:;
	}
    return 0;
}
//メモリ数確認したか?