#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
pair<int, int> l[MAXN], r[MAXN], tot[MAXN * 2];
int n, cnt;
vector<int> G[MAXN * 2];
int col[MAXN * 2];
void dfs(int u, int c) {
  if (col[u] != -1) return;
  col[u] = c;
  for (int i = 0; i < (int)G[u].size(); i++) dfs(G[u][i], c ^ 1);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    b++;
    l[i] = make_pair(a, i << 1);
    r[i] = make_pair(b, i << 1 | 1);
    tot[cnt++] = l[i];
    tot[cnt++] = r[i];
    G[i * 2].push_back(i * 2 + 1);
    G[i * 2 + 1].push_back(i * 2);
  }
  memset(col, -1, sizeof(col));
  sort(tot, tot + cnt);
  for (int i = 0; i < cnt; i += 2) {
    G[tot[i].second].push_back(tot[i + 1].second);
    G[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 ", col[i]);
  return 0;
}
