1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long int lld;

struct point{
	lld x,y;
	int id;
};

bool comp_x(const point& a, const point& b){
	if(a.x == b.x)
		return a.y < b.y;

	return a.x < b.x;
}

bool comp_y(const point& a, const point& b){
	if(a.y == b.y)
		return a.x < b.x;

	return a.y < b.y;
}

point t[2005];
lld d[2005];

int main(void){
	int q;

	scanf("%d",&q);

	while(q--){
		int n;

		scanf("%d",&n);

		for(int i=0;i<n;i++)
			scanf("%lld%lld",&t[i].x,&t[i].y);

		if(n==1){
			printf("TAK\n1\n");
			return 0;
		}

		for(int i=0;i<n;i++){
			d[i]=-1;
			t[i].id=i;
		}

		sort(t,t+n,comp_x);

		for(int i=0;i<n-1;i++)
			if(t[i].x == t[i+1].x)
				d[t[i].id]=t[i+1].y-t[i].y;

		sort(t,t+n,comp_y);

		for(int i=0;i<n-1;i++){
			if(t[i].y == t[i+1].y)
				d[t[i].id]=t[i+1].x-t[i].x;
		}

		vector<point> v;

		for(int i=0;i<n;i++)
			if(d[i]==-1)
				v.push_back(t[i]);

		sort(v.begin(),v.end(),comp_x);

		for(int i=0;i<v.size()-1;i++)
			d[v[i].id]=v[i+1].x-v[i].x;

		lld maxx=0, maxy=0;

		for(int i=0;i<n;i++){
			if(t[i].id == v.back().id)
				continue;

			maxx=max(maxx,d[t[i].id]+t[i].x);
			maxy=max(maxy,d[t[i].id]+t[i].y);
		}

		d[v.back().id]=max(maxx-v.back().x,maxy-v.back().y);

		lld pole=0;

		lld mnx=1e10,mxx=0;
		lld mny=1e10,mxy=0;

		for(int i=0;i<n;i++){
			if(d[i]==0){
				printf("NIE\n");
				continue;
			}

			mnx=min(mnx,t[i].x);
			mny=min(mny,t[i].y);
			mxx=max(mxx,t[i].x+d[t[i].id]);
			mxy=max(mxy,t[i].y+d[t[i].id]);

			pole+=d[t[i].id]*d[t[i].id];
		}

		if(pole != (mxx-mnx)*(mxy-mny)){
			printf("NIE\n");
			continue;
		}

		printf("TAK\n");
		for(int i=0;i<n;i++)
			printf("%lld ",d[i]);
		printf("\n");
	}
	return 0;
}