#include <bits/stdc++.h>
long long gi() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) f ^= ch == '-', ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return f ? x : -x;
}
int fir[200010], dis[1000010], nxt[1000010], w[1000010], dir[1000010], id = 1;
void link(int a, int b) {
  nxt[++id] = fir[a], fir[a] = id, dis[id] = b, w[id] = 1;
  nxt[++id] = fir[b], fir[b] = id, dis[id] = a, w[id] = 1;
}
int l[100010], r[100010], u[200010], U, E[100010], c[200010];
void dfs(int x) {
  for (int& i = fir[x]; i; i = nxt[i])
    if (w[i]) w[i] = w[i ^ 1] = 0, dir[i] = 1, dir[i ^ 1] = 2, dfs(dis[i]);
}
int main() {
  int n = gi();
  for (int i = 1; i <= n; ++i)
    l[i] = gi() - 1, r[i] = gi(), u[++U] = l[i], u[++U] = r[i];
  std::sort(u + 1, u + U + 1);
  U = std::unique(u + 1, u + U + 1) - u - 1;
  for (int i = 1; i <= n; ++i)
    l[i] = std::lower_bound(u + 1, u + U + 1, l[i]) - u;
  for (int i = 1; i <= n; ++i)
    r[i] = std::lower_bound(u + 1, u + U + 1, r[i]) - u;
  for (int i = 1; i <= n; ++i)
    link(l[i], r[i]), ++c[l[i]], ++c[r[i]], E[i] = id;
  for (int i = 1; i <= U; ++i)
    if (c[i] & 1) link(i, i + 1), ++c[i + 1];
  for (int i = 1; i <= U; ++i) dfs(i);
  for (int i = 1; i <= n; ++i) printf("%d ", dir[E[i]] & 1);
  return 0;
}
