#include <bits/stdc++.h>
using namespace std;
const int N = 100030;
pair<int, int> l[N], r[N], tot[N * 2];
int n, cnt;
vector<int> mp[N << 1];
int vis[N << 1];
int read() {
  char c = getchar();
  int k = 0;
  for (; c < 48 || c > 57; c = getchar())
    ;
  for (; c > 47 && c < 58; c = getchar()) k = (k << 3) + (k << 1) + c - 48;
  return k;
}
void dfs(int p, int mat) {
  if (vis[p] != -1) return;
  vis[p] = mat;
  for (int i = 0; i < (int)mp[p].size(); i++) dfs(mp[p][i], mat ^ 1);
}
int main() {
  n = read();
  for (int i = 0, a, b; i < n; i++) {
    a = read(), b = read();
    b++;
    l[i] = make_pair(a, i << 1);
    r[i] = make_pair(b, i << 1 | 1);
    tot[cnt++] = l[i];
    tot[cnt++] = r[i];
    mp[i * 2].push_back(i * 2 + 1);
    mp[i * 2 + 1].push_back(i * 2);
  }
  memset(vis, -1, sizeof vis);
  sort(tot, tot + cnt);
  for (int i = 0; i < cnt; i += 2) {
    mp[tot[i].second].push_back(tot[i + 1].second);
    mp[tot[i + 1].second].push_back(tot[i].second);
  }
  for (int i = 0; i < cnt; i++) dfs(i, 0);
  for (int i = 0; i < cnt; i += 2) printf("%d ", vis[i]);
  return 0;
}
