#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <vector>

typedef long long lLong;
typedef unsigned long uLong;
typedef unsigned long long ulLong;

using namespace std;

typedef struct Oferta
{
public:
	Oferta()
	{
		Clear();	
	}	
	// zakres szerokosci luster - przedział domkniety
	ulLong w1;
	ulLong w2; 
	// zakres wysokosci lustra - przedział domkniety 
	ulLong h1;
	ulLong h2; 	

	inline bool SprawdzCzyOfertaMajoryzuje(Oferta& oferta)
	{
		bool zwrot = ((w1==0) || (oferta.w1<=w1 && oferta.w2>=w2 && oferta.h1<=h1 && oferta.h2>=h2));
		return zwrot;		
	}
	inline void Wczytaj(Oferta &oferta)
	{
		w1 = oferta.w1;
		w2 = oferta.w2;
		h1 = oferta.h1;
		h2 = oferta.h2;
	}
	inline void Wczytaj(FILE * file)
	{
		if(NULL!=file)
		{
			fscanf(file,"%llu %llu %llu %llu",&w1,&w2,&h1,&h2);
		}		
	}
	inline void Wypisz(FILE * file)
	{
		if(NULL!=file)
		{
			fprintf(file,"%llu %llu %llu %llu\n",w1,w2,h1,h2);
		}		
	}
	inline void UpdateIdeal(Oferta &oferta)
	{
		if(w1==0)
		{
			Wczytaj(oferta);
		}
		else
		{
			w1=min(oferta.w1,w1);
			w2=max(oferta.w2,w2);
			h1=min(oferta.h1,h1);
			h2=max(oferta.h2,h2);
		}
	}
	void Clear()
	{
		w1=w2=h1=h2=0;
	}
} Oferta, *pOferta;

class PrzypadekTestowy
{
private:
	Oferta _aktualnaOferta;
	Oferta _idealnaOferta;
	Oferta _majoranta;

	inline void Reset()
	{
		_aktualnaOferta.Clear();
		_idealnaOferta.Clear();
		_majoranta.Clear();
	}
public:
	int n; //ilosc zakladow prod. lustra
	
	inline void WczytajPrzypadekTestowy()
	{
		WczytajPrzypadekTestowy(stdin);
	}
	inline void WczytajPrzypadekTestowy(FILE *input)
	{
		Reset();
		if(NULL!=input)
		{
			fscanf(input,"%d", &n);
			for(int i=0;i<n;i++)
			{
				_aktualnaOferta.Wczytaj(input);
				_idealnaOferta.UpdateIdeal(_aktualnaOferta);
				if(_idealnaOferta.SprawdzCzyOfertaMajoryzuje(_aktualnaOferta))
				{
					_majoranta.Wczytaj(_aktualnaOferta);
				}
				// sprawdzenie czy aktualnie wytypowana majoranta nadal spelnia warunki bycia majoranta
				else if(_majoranta.w1>0 && false==_idealnaOferta.SprawdzCzyOfertaMajoryzuje(_majoranta))
				{
					_majoranta.Clear();				
				}
			}
		}
	}
	inline bool SprawdzCzyJestOfertaMajoryzujaca()
	{
		bool zwrot=_majoranta.w1>0;
		return zwrot;
	}
};


///Generator testu
inline void GenerujTest()
{
	FILE *output=fopen("p:\\potyczki\\PA2014\\Debug\\lus1.in","wt");
	Oferta oferta;
	const int MAX_N=100000;
	fprintf(output,"%d\n",MAX_N);
	for(int i=1,j=MAX_N;i<=MAX_N && j>=1;i++,j--)
	{
		oferta.w1=i;
		oferta.w2=j;
		oferta.h1=i;
		oferta.h2=j;
		oferta.Wypisz(output);
	}
	fclose(output);
}

int main(int argc, char **argv)
{		
	// Do celow testowych
	FILE *in=stdin;
	if(argc>1)
	{		
		in = fopen(argv[1],"rt");
		if(NULL==in)
		{
			in=stdin;
		}
	}
	///////////////////////////////////////////	
	PrzypadekTestowy przypadek;		
	int t;	// liczba przypadkow testowych

	fscanf(in,"%d",&t);				
	for(int i=0;i<t;i++)
	{		
		przypadek.WczytajPrzypadekTestowy(in);
		if(przypadek.SprawdzCzyJestOfertaMajoryzujaca())
		{
			printf("TAK\n");
		}
		else
		{
			printf("NIE\n");
		}
	}		
	return 0;
}
