#include <bits/stdc++.h>
using namespace std;
long long inf = 1e9 + 7;
long long mod = 1e9 + 7;
using namespace std;
bool comp(pair<pair<long long, long long>, long long> a,
          pair<pair<long long, long long>, long long> b) {
  if (a.first.first != b.first.first) return a.first.first < b.first.first;
  return a.first.second < b.first.second;
}
bool isOverlap(pair<long long, long long> a, pair<long long, long long> b) {
  if (a.second < b.first or a.first > b.second) return false;
  return true;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long T, N, i, j, k, L, l, r, m, n;
  long long K, P;
  long long M;
  cin >> T;
  while (T--) {
    deque<pair<pair<long long, long long>, long long> > v;
    cin >> N;
    vector<long long> ret(N, 0);
    for (i = 0; i < N; i++) {
      cin >> l >> r;
      v.push_back(make_pair(make_pair(l, r), i));
    }
    sort(v.begin(), v.end(), comp);
    vector<long long> ans;
    while (!v.empty()) {
      pair<long long, long long> inv = v.front().first;
      ans.push_back(v.front().second);
      v.pop_front();
      while (!v.empty() and isOverlap(inv, v.front().first)) {
        ans.push_back(v.front().second);
        inv.first =
            (((inv.first) < (v.front().first.first)) ? (inv.first)
                                                     : (v.front().first.first));
        inv.second = (((inv.second) > (v.front().first.second))
                          ? (inv.second)
                          : (v.front().first.second));
        v.pop_front();
      }
      break;
    }
    if (v.empty())
      cout << -1 << endl;
    else {
      for (i = 0; i < ans.size(); i++) ret[ans[i]] = 1;
      while (!v.empty()) {
        ret[v.front().second] = 2;
        v.pop_front();
      }
      for (i = 0; i < N; i++) cout << ret[i] << " ";
      cout << endl;
    }
    ret.clear();
  }
}
