#include<iostream>
#include<cstdio>
using namespace std;
int w,h,xs,ys,xg,yg,n;
int c,d,x,y,ans=0,f=0;
int map[100][100]={0},v[100][100]={0};
int root(int x,int y,int vmap[][100]){
	int mx[]={0,1,0,-1},fx;
	int my[]={1,0,-1,0},fy;
	if(x==xg&&y==yg){
		f=1;
		return f;
	}
	for(int i=0;i<4;i++){
		fx=x+mx[i];
		fy=y+my[i];
		if(map[fy][fx]==map[xs][ys]&&fy>=0&&fy<h&&fx>=0&&fx<w&&vmap[fy][fx]==0){
			vmap[fy][fx]=1;
			return root(fx,fy,vmap);
		}
	}
	return f;
}
int main(){
	scanf("%d %d",&w ,&h);
	while(w!=0&&h!=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==0){
				for(int w=x;w<x+4;w++){
					for(int h=y;h<y+2;h++){
						map[h][w]=c;
					}
				}
			}
			if(d==1){
				for(int w=x;w<x+2;w++){
					for(int h=y;h<y+4;h++){
						map[h][w]=c;
					}
				}
			}
		}
		/*for(int i=0;i<w;i++){
			for(int i1=0;i1<h;i1++){
				printf("%d ",map[i][i1]);
			}printf("\n");
		}*/
		x=xs;
		y=ys;
		ans=root(x,y,v);
		if(ans==1){
			printf("OK\n");
		}
		else{
			printf("NG\n");
		}
		for(int i=0;i<100;i++){
			for(int i1=0;i1<100;i1++){
				map[i][i1]=0;
				v[i][i1]=0;
			}
		}
		f=0;
		ans=0;
		scanf("%d %d",&w ,&h);
	}
	return 0;
}