#include<bits/stdc++.h>
#define endl '\n'
#define bug puts("aaa");
#define Case int t;scanf("%d",&t);while(t--)
#define ios ios::sync_with_stdio(0),cin.tie(0);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double eps = 1e-5;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
const int N = 1e6+10;

int n,x,mi[N<<2],a[N];
unordered_map<int,int>mp;

struct node {
	int x,y;
}e[N];


void pushup(int rt) {
	mi[rt] = mp[e[mi[rt<<1]].y] > mp[e[mi[rt<<1|1]].y] ? mi[rt<<1|1] : mi[rt<<1];
}

void build(int l,int r,int rt) {
	if(l==r) {
		mi[rt] = 0;
		return;
	}
	int mid = l+r>>1;
	build(l,mid,rt<<1);
	build(mid+1,r,rt<<1|1);
	pushup(rt);
}

void update(int pos, int val, int l, int r, int rt) {
	if(l==r) {
		mi[rt] = mp[e[val].y] < mp[e[mi[rt]].y] ? val : mi[rt];
		return;
	}
	int mid = l+r>>1;
	if(pos <= mid) update(pos,val,l,mid,rt<<1);
	else update(pos,val,mid+1,r,rt<<1|1);
	pushup(rt);
}

int query(int L,int R,int l,int r,int rt) {
	if(L<=l && r<=R) {
		return mi[rt];
	}
	int mid = l+r>>1;
	int lson = 0,rson = 0;
	if(L <= mid) lson = query(L,R,l,mid,rt<<1);
	if(R > mid) rson = query(L,R,mid+1,r,rt<<1|1);
	return mp[e[lson].y] > mp[e[rson].y] ?rson:lson;
}

void run() {
	mp.clear();
	scanf("%d",&n);
	int x,y,range = 0,idx=0;
	e[0].x = e[0].y = inf;
	mp[inf] = inf;
	for (int i=1;i<=n;i++) {
		scanf("%d %d",&e[i].x,&e[i].y);
		a[++idx] = e[i].x;
		a[++idx] = e[i].y;

		/**
		 * 如果不交换,只符合hj<hi && wj<wi的情况
		 * 首先按把w和h大的那个，放在x位置
		 * 那么我们去找[1,x-1]区间，里面的x肯定满足条件
		 * 接着在这个区间中去找符合条件的y,
		 */
		if(e[i].x > e[i].y) swap(e[i].x,e[i].y);
	}

	/**
	 * 离散化
	 */
	sort(a+1,a+idx+1);
	for (int i=1;i<=idx;i++) {
		if(mp[a[i]])continue;
		mp[a[i]] = ++range;
	}



	build(1,range,1);
	for (int i=1;i<=n;i++) {
		update(mp[e[i].x],i,1,range,1);
	}
	for (int i=1;i<=n;i++) {
		if(mp[e[i].x] == 1) {
			printf("-1 ");
			continue;
		}
		int res = query(1,mp[e[i].x]-1,1,range,1);
		if (e[res].y >= e[i].y) {
			printf("-1 ");
		} else {
			printf("%d ",res);
		}
	}
	printf("\n");
}


int main() {
	// freopen("input.txt","r",stdin);
	// freopen("output.txt","w",stdout);
	Case
	run();
	return 0;
}