#include <bits/stdc++.h>
using namespace std;
struct node {
  int l, r, i;
};
const int N = 2e5 + 5;
int T[N], n, q;
node A[N];
bool cmp(node a, node b) {
  if (a.l < b.l) return (1);
  if (a.l > b.l) return (0);
  if (a.r < b.r) return (1);
  return (0);
}
int main() {
  scanf("%d", &q);
  for (int Q = 0; Q < q; Q++) {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
      scanf("%d %d", &A[i].l, &A[i].r);
      A[i].i = i;
    }
    sort(A, A + n, cmp);
    for (int i = 0; i < n; i++) T[i] = 0;
    int pt = -1, a, b;
    a = b = 0;
    int tr = 0;
    for (int i = 0; i < n; i++) {
      if (pt < A[i].l) {
        tr ^= 1;
        pt = A[i].r;
        T[A[i].i] = tr;
        continue;
      }
      T[A[i].i] = tr;
      pt = max(pt, A[i].r);
    }
    for (int i = 0; i < n; i++) {
      if (T[i])
        a++;
      else
        b++;
    }
    if (!min(a, b)) {
      printf("-1\n");
      continue;
    }
    for (int i = 0; i < n; i++) printf("%d ", T[i] + 1);
    printf("\n");
  }
}
