#include<iostream>

using namespace std;

int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int N;
int W,H;
pair<int,int>s;
pair<int,int>g;
int sc;
int map[103][103]={0};
bool flag[103][103]={0};
int ans=0;

bool se(int x,int y){
	if(x==g.first && y==g.second)ans=1;
	for(int i=0;i<4;i++){
		int xx=x+dx[i];
		int yy=dy[i]+y;
		if(xx>=0 &&yy>=0 &&xx<W &&yy<H && sc==map[xx][yy]&& flag[xx][yy]==0){
			flag[xx][yy]=1;
			se(xx,yy);
		}
	}
	return 0;
}


int main(){
	
	while(cin>>W>>H>>s.first>>s.second>>g.first>>g.second>>N,H,W){
		int d,c,x,y;
		
		for(int i=0;i<N;i++){
			cin>>c>>d>>x>>y;
			if(d){
				for(int i=x;i<x+2;i++){
					for(int j=y;j<y+4;j++){
						map[i][j]=c;
				}
			}
		}else{
			for(int i=x;i<x+4;i++){
				for(int j=y;j<y+2;j++){
					map[i][j]=c;
				}
			}
		}
		}
		sc=map[s.first][s.second];
		flag[s.first][s.second]=1;
		
		se(s.first,s.second);
		if(ans)cout<<"OK"<<endl;
		else cout<<"NG"<<endl;
		ans=0;
		int map[103][103]={0};
		bool flag[103][103]={0};
		/*
		if(se(s.first,s.second))cout<<"OK"<<endl;
		else cout<<"NG"<<endl;
		*/
	}
	return 0;
}

