#include <bits/stdc++.h>
using namespace std;
const int MAXN = (int)1e5 + 10, l = 63;
bitset<MAXN> a[70];
int n, m, t, v[70], bel[MAXN];
long long s;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    long long first;
    cin >> first;
    s ^= first;
    for (int j = 0; j < l; ++j) a[l - 1 - j][i] = (first >> j) & 1;
  }
  for (int i = 0; i < l; ++i)
    if (!((s >> (l - 1 - i)) & 1)) rotate(a + t, a + i, a + i + 1), ++t;
  for (int i = 0; i < l; ++i) {
    a[i][n] = 1;
    for (int j = 0; j < m; ++j)
      if (a[i][v[j]]) a[i] ^= a[j];
    int p = 0;
    for (; !a[i][p] && p < n; ++p)
      ;
    if (p == n)
      a[i][n] = 0;
    else {
      for (int j = 0; j < m; ++j)
        if (a[j][p]) a[j] ^= a[i];
      v[m] = p;
      swap(a[m], a[i]);
      ++m;
    }
  }
  for (int i = 0; i < m; ++i) bel[v[i]] = a[i][n];
  for (int i = 0; i < n; ++i) printf((bel[i] ? "2 " : "1 "));
  puts("");
  fclose(stdin);
  fclose(stdout);
  return 0;
}
