#include <bits/stdc++.h>
using namespace std;
const int N = 110000, up = 62;
bitset<110000> c[up * 2 + 4];
int b[up * 2 + 10], n, d[up * 2 + 10], num[up * 2 + 10];
long long a[N], sh[up * 2 + 10], outp[N];
bool ok[up * 2];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  sh[1] = 1;
  for (int i = 2; i <= up + 1; i++) sh[i] = sh[i - 1] * 2;
  int ans = up + 1;
  for (int i = up; i >= 1; i--) {
    if (i == 3) {
      int fmk = 0;
      fmk = -1;
    }
    bool ok = 0;
    for (int j = 1; j <= n; j++)
      if (sh[i] & a[j]) num[i]++, c[i][j] = 1;
    if (num[i] % 2 == 1 || num[i] == 0) {
      ans = i;
      continue;
    }
    b[i] = 1;
    for (int j = up; j >= i + 1; j--)
      if (!c[j].none() && num[j] % 2 == 0 && num[j] != 0) {
        if (c[i].test(d[j])) c[i] ^= c[j], b[i] ^= b[j];
      }
    if (c[i].none() && b[i] == 1) {
      b[i] = 0;
      continue;
    }
    ans = i;
    for (int j = 1; j <= n; j++)
      if (c[i].test(j)) {
        d[i] = j;
        break;
      }
  }
  for (int i = up; i >= 1; i--)
    if (num[i] && num[i] % 2 == 1) {
      b[i] = 0;
      for (int j = up; j >= ans; j--)
        if (num[j] % 2 == 0 && num[j] != 0) {
          if (c[i].test(d[j])) c[i] ^= c[j], b[i] ^= b[j];
        }
      for (int j = up; j >= ans; j--)
        if (num[j] % 2 == 1 && ok[j]) {
          if (c[i].test(d[j])) c[i] ^= c[j], b[i] ^= b[j];
        }
      if (c[i].none() && b[i] == 1) {
        ok[i] = 0;
        continue;
      }
      ok[i] = 1;
      for (int j = 1; j <= n; j++)
        if (c[i].test(j)) {
          d[i] = j;
          break;
        }
    }
  memset(outp, -1, sizeof(outp));
  for (int i = 1; i <= up; i++)
    if (ok[i]) {
      for (int j = 1; j <= n; j++)
        if (c[i].test(j))
          if (outp[j] != -1) b[i] ^= outp[j];
      for (int j = 1; j <= n; j++)
        if (c[i].test(j))
          if (outp[j] == -1) outp[j] = b[i], b[i] = 0;
    }
  for (int i = ans; i <= up; i++)
    if (num[i] % 2 == 0 && num[i]) {
      for (int j = 1; j <= n; j++)
        if (c[i].test(j))
          if (outp[j] != -1) b[i] ^= outp[j];
      for (int j = 1; j <= n; j++)
        if (c[i].test(j))
          if (outp[j] == -1) outp[j] = b[i], b[i] = 0;
    }
  for (int i = 1; i <= n; i++)
    if (outp[i] <= 0)
      outp[i] = 2;
    else
      outp[i] = 1;
  for (int i = 1; i <= n; i++) printf("%I64d ", outp[i]);
  long long a1 = 0, a2 = 0;
  for (int i = 1; i <= n; i++)
    if (outp[i] == 1)
      a1 ^= a[i];
    else
      a2 ^= a[i];
}
