#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, ch = getchar(), f = 1;
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return x * f;
}
const int N = 100010, M = 60;
int n, tot, p[M + 10], ans[N];
long long xi[N], sum;
bitset<N> f[M + 10], g[M + 10];
int main() {
  n = read();
  for (int i = 1; i <= n; ++i) {
    cin >> xi[i];
    sum ^= xi[i];
    for (int j = 0; j <= M; ++j) g[j][i] = ((xi[i] >> j) & 1);
  }
  for (int bit = 0; bit <= 1; ++bit)
    for (int i = 60; i >= 0; --i) {
      if (((sum >> i) & 1) ^ bit) continue;
      f[++tot] = g[i];
      f[tot][n + 1] = 1;
      for (int j = 1; j <= tot - 1; ++j)
        if (f[tot][p[j]]) f[tot] ^= f[j];
      p[tot] = n + 2;
      for (int j = 1; j <= n; ++j)
        if (f[tot][j]) {
          p[tot] = j;
          break;
        }
      if (p[tot] > n) {
        --tot;
        continue;
      }
      for (int j = 1; j <= tot - 1; ++j)
        if (f[j][p[tot]]) f[j] ^= f[tot];
    }
  for (int i = 1; i <= tot; ++i) ans[p[i]] = f[i][n + 1];
  for (int i = 1; i <= n; ++i) printf("%d ", 1 + ans[i]);
  printf("\n");
  return 0;
}
