		if(ban[x][y+1]==c&&visited[x][y+1]==false){
			visited[x][y+1]=true;
			if(dfs(x,y+1,c))return true;
		}
		if(x>=2&&ban[x-1][y]==c&&visited[x-1][y]==false){
			visited[x-1][y]=true;
			if(dfs(x-1,y,c))return true;
		}
		if(y>=2&&ban[x][y-1]==c&&visited[x][y-1]==false){
			visited[x][y-1]=true;
			if(dfs(x,y-1,c))return true;
		}
		return false;
	}


int main(){

	while(cin>>w>>h&&w&&h){
	cin>>xs>>ys>>xg>>yg>>n;
	for(int i=0;i<101;i++)
	for(int j=0;j<101;j++)ban[i][j]=-1,visited[i][j]=false;
	
	for(int i=0;i<n;i++){
		int c,d,x,y;
		cin>>c>>d>>x>>y;
		if(!d){
			for(int i=x;i<x+4;i++){
				for(int j=y;j<y+2;j++){
					ban[i][j]=c;
				}
			}
		}
		else{
		for(int i=x;i<x+2;i++){
				for(int j=y;j<y+4;j++){
					ban[i][j]=c;
				}
			}
		}
		}
		if(dfs(xs,ys,ban[xs][ys]))cout<<"OK"<<endl;
	else cout<<"NG"<<endl;
	}
	return 0;
	}