#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 7;
const int mod = 998244353;
const long long INFLL = 0x3f3f3f3f3f3f3fLL;
const int INF = 0x3f3f3f3f;
using namespace std;
int t, n, vis[maxn];
struct node {
  int l, r, id;
} qu[maxn];
int cmp(node a, node b) {
  if (a.l == b.l) return a.r < b.r;
  return a.l < b.l;
}
int main() {
  scanf("%d", &t);
  while (t--) {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) vis[i] = 0;
    for (int i = 1; i <= n; i++) {
      scanf("%d%d", &qu[i].l, &qu[i].r);
      qu[i].id = i;
    }
    sort(qu + 1, qu + 1 + n, cmp);
    int maxx = qu[1].r, flag = 0;
    ;
    for (int i = 1; i <= n; i++) {
      if (qu[i].l > maxx) {
        flag = 1;
        for (int j = i; j <= n; j++) vis[qu[j].id] = 2;
        break;
      } else {
        vis[qu[i].id] = 1;
        maxx = max(maxx, qu[i].r);
      }
    }
    if (!flag)
      printf("-1\n");
    else {
      for (int i = 1; i <= n; i++) printf("%d ", vis[i]);
      printf("\n");
    }
  }
  return 0;
}
