#include<stdio.h>

int w,h;
int masu[100][100];
int uramasu[100][100];
int stx,sty;
int gox,goy;
int flg;

void saiki(int x,int y,int col){
	
	if(x==gox && y==goy){
		flg=1;
	}
	
	if(x+1<w && masu[x+1][y]==col && uramasu[x+1][y]==0){
		uramasu[x+1][y]=1;
		saiki(x+1,y,col);
	}
	
	if(y+1<h && masu[x][y+1]==col && uramasu[x][y+1]==0){
		uramasu[x][y+1]=1;
		saiki(x,y+1,col);
	}
	
	if(x-1>=0 && masu[x-1][y]==col && uramasu[x-1][y]==0){
		uramasu[x-1][y]=1;
		saiki(x-1,y,col);
	}
	
	if(y-1>=0 && masu[x][y-1]==col && uramasu[x][y-1]==0){
		uramasu[x][y-1]=1;
		saiki(x,y-1,col);
	}
}

int main(void){
	while(1){
		
		scanf("%d%d",&w,&h);
		flg=0;
		if(w==0){
			break;
		}
		scanf("%d%d",&stx,&sty);
		scanf("%d%d",&gox,&goy);
		int n;
		scanf("%d",&n);
		
		for(int i=0;i<100;i++){
			for(int j=0;j<100;j++){
				masu[i][j]=0;
				uramasu[i][j]=0;
			}
		}
		for(int i=0;i<n;i++){
			int c,d,x,y;
			scanf("%d%d%d%d",&c,&d,&x,&y);
			switch(d){
				case 0:
				for(int i=0;i<4;i++){
					for(int j=0;j<2;j++){
						masu[i+x][j+y]=c;
					}
				}break;
				
				case 1:
				for(int i=0;i<2;i++){
					for(int j=0;j<4;j++){
						masu[i+x][j+y]=c;
					}
				}
			}
		}
		
		saiki(stx,sty,masu[stx][sty]);
		
		if(flg==0){
			puts("NG");
		}else{
			puts("OK");
		}
		
		/*
		for(int i=0;i<w;i++){
			for(int j=0;j<h;j++){
				if(masu[j][i]==0){
					printf(" ");
					continue;
				}
				printf("%d ",masu[j][i]);
			}
			puts("");
		}*/
	}
	
}