#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 10;
int n, fir[MAXN], nxt[MAXN << 1], to[MAXN << 1], ans[MAXN << 1], vis[MAXN << 1],
    tot = 1, d[MAXN << 1];
int d1[MAXN << 1], d2[MAXN << 1];
int l[MAXN], r[MAXN], t[MAXN << 1], cnt;
void add(int u, int v) {
  to[++tot] = v;
  nxt[tot] = fir[u];
  fir[u] = tot;
}
void dfs(int x) {
  for (int &i = fir[x]; i; i = nxt[i]) {
    int v = to[i];
    if (vis[i >> 1]) continue;
    vis[i >> 1] = 1;
    if ((i >> 1) <= n) ans[i >> 1] = i & 1;
    dfs(v);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", &l[i], &r[i]);
    r[i]++;
    t[i] = l[i];
    t[i + n] = r[i];
  }
  sort(t + 1, t + 2 * n + 1);
  int k = unique(t + 1, t + 2 * n + 1) - t - 1;
  for (int i = 1; i <= n; i++) {
    l[i] = lower_bound(t + 1, t + k + 1, l[i]) - t;
    r[i] = lower_bound(t + 1, t + k + 1, r[i]) - t;
    add(l[i], r[i]);
    add(r[i], l[i]);
    d1[l[i]]++;
    d2[r[i]]++;
  }
  for (int i = 1; i <= k; i++) {
    d[i] = d[i - 1] + d1[i] - d2[i];
    if (d[i] & 1) {
      add(i, i + 1);
      add(i + 1, i);
    }
  }
  for (int i = 1; i <= k; i++) dfs(i);
  for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
  return 0;
}
