#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = 10 * x + ch - '0';
    ch = getchar();
  }
  return x * f;
}
bitset<100000 + 5> f[70], g[70];
int n, m, c[100000 + 5], p[100000 + 5];
long long sum;
int main() {
  n = read();
  for (int i = 1; i <= (n); i++) {
    long long x = read();
    sum ^= x;
    for (int j = 0; j <= (62); j++)
      if (x >> j & 1) g[j][i] = 1;
  }
  for (int w = 0; w <= (1); w++)
    for (int i = (62); i >= (0); i--)
      if ((sum >> i & 1) == w) {
        f[++m] = g[i];
        f[m][n + 1] = 1;
        p[m] = 1000000000;
        for (int j = 1; j <= (m - 1); j++)
          if (f[m][p[j]]) f[m] ^= f[j];
        for (int j = 1; j <= (n); j++)
          if (f[m][j]) {
            p[m] = j;
            break;
          }
        if (p[m] > n)
          m--;
        else
          for (int j = 1; j <= (m - 1); j++)
            if (f[j][p[m]]) f[j] ^= f[m];
      }
  for (int i = 1; i <= (m); i++) c[p[i]] = f[i][n + 1];
  for (int i = 1; i <= (n); i++) printf("%d%c", c[i] + 1, i == n ? '\n' : ' ');
  return 0;
}
