#include <bits/stdc++.h>
using namespace std;
long long int powr(long long int a, long long int b) {
  long long int res = 1;
  while (b) {
    if (b % 2) res = (a * res) % 1000000007;
    a = (a * a) % 1000000007;
    b /= 2;
  }
  return res;
}
void extentded_eucledian(long long int a, long long int b, long long int &ex,
                         long long int &ey) {
  if (b == 0) {
    ex = 1;
    ey = 0;
    return;
  }
  extentded_eucledian(b, a % b, ex, ey);
  swap(ex, ey);
  ey -= (a / b) * ex;
}
bool cmp(pair<pair<long long int, long long int>, long long int> &a,
         pair<pair<long long int, long long int>, long long int> &b) {
  if (a.first.first != b.first.first) return (a.first.first < b.first.first);
  return (a.first.second < b.first.second);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int tc = 1;
  cin >> tc;
  while (tc--) {
    long long int n;
    cin >> n;
    vector<pair<pair<long long int, long long int>, long long int>> vec;
    vector<long long int> ans(n);
    for (long long int i = 0; i < n; ++i) {
      long long int x, y;
      cin >> x >> y;
      vec.push_back(make_pair(make_pair(x, y), i));
    }
    sort(vec.begin(), vec.end(), cmp);
    long long int curr = 1, maxr = vec[0].first.second, wasn1 = 1, wasn2 = 1;
    ans[vec[0].second] = 1;
    stack<long long int> s;
    for (long long int i = 1; i < n; ++i) {
      if (maxr >= vec[i].first.first)
        s.push(vec[i].second);
      else {
        while (!s.empty()) {
          long long int tmp = s.top();
          s.pop();
          ans[tmp] = curr;
        }
        curr = 3 - curr;
        s.push(vec[i].second);
      }
      maxr = max(maxr, vec[i].first.second);
    }
    while (!s.empty()) {
      long long int tmp = s.top();
      s.pop();
      ans[tmp] = curr;
    }
    for (long long int i : ans)
      if (i == 1) wasn1 = 0;
    for (long long int i : ans)
      if (i == 2) wasn2 = 0;
    if (wasn1 || wasn2)
      cout << "-1\n";
    else {
      for (auto lstelem : ans) cout << lstelem << " ";
      cout << " \n";
    }
  }
  return 0;
}
