#include<stdio.h>
#include<stdlib.h>

struct samochod {
    int x1;
    int x2;
    int nx1;
    int nx2;
    int wys;
};


main () {
    int licz_testow,licz_pojazdow,wys_parkingu;
    struct samochod sam[50000];
    int i,j,k,l;
    int a,b,c,wynik;
    int wx1, wy1, wx2, wy2;
    scanf("%d",&licz_testow);
    for(i=0;i<licz_testow;i++) {
	/*wczytywanie danych*/
	scanf("%d %d",&licz_pojazdow,&wys_parkingu);
	for(j=0;j<licz_pojazdow;j++) {
	    scanf("%d %d %d %d",&wx1,&wy1,&wx2,&wy2);
	    if(wx1 < wx2) {
		sam[j].x1=wx1;
		sam[j].x2=wx2;
	    }else {
		sam[j].x1=wx2;
		sam[j].x2=wx1;
	    }
	    if(wy1 < wy2) {
		sam[j].wys=wy2-wy1;
	    }else {
		sam[j].wys=wy1-wy2;
	    }

	}
	for(j=0;j<licz_pojazdow;j++) {
	    scanf("%d %d %d %d",&wx1,&wy1,&wx2,&wy2);
	    if(wx1 < wx2) {
		sam[j].nx1=wx1;
		sam[j].nx2=wx2;
	    }else {
		sam[j].nx1=wx2;
		sam[j].nx2=wx1;
	    }
	}


	/*cuda,dziwy,dane pomocnicze -*/
	k=0;
	
	wynik=0;
	for(j=0;j<licz_pojazdow;j++){
	    /*jeśli nie zmienia polozenia*/
	    if(sam[j].x1==sam[j].nx1) {
		continue;
	    } else {
		//wolne miejsce - wysokosc
		a=wys_parkingu - sam[j].wys;
		for(k=0;k<licz_pojazdow;k++) {
		    //jeden na drugim lub ten sam
		    if(sam[j].x1==sam[k].x1) {
			continue;
		    //jesli za duzy nie zmiesci sie
		    } else if(a<sam[k].wys) {
			if(sam[j].x1<sam[k].x1&&sam[j].nx1<sam[k].nx1)
				continue;
			else if(sam[j].x1>sam[k].x1&&sam[j].nx1>sam[k].nx1)
				continue;
			else {
				wynik=1;
				break;
			}
		    }
		}
		if(wynik==1)
		    break;
	    }

	}
	if(wynik==1)
	    printf("NIE\n");
	else
	    printf("TAK\n");
    }
    return 0;
}
