#include <bits/stdc++.h>
int n, flag, rk[100005], o[100005], b[100005], p[100005];
long long a[100005], c[65], q[65], e[3], res, x, y;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < 63; i++) p[i] = -1;
  for (int i = 0; i < n; i++) scanf("%I64d", a + i), res ^= a[i];
  for (int i = 0; i < 63; i++) rk[i] = res >> i & 1;
  for (int i = 0; i < n; i++) {
    x = a[i], y = 0;
    for (int j = 62; j >= 0; j--)
      if (!rk[j] && x >> j & 1)
        if (p[j] < 0) {
          p[j] = i, c[j] = x, q[j] = y, x = -1;
          break;
        } else
          x ^= c[j], y |= 1LL << j;
    if (x < 0) continue;
    for (int j = 62; j >= 0; j--)
      if (rk[j] && x >> j & 1)
        if (p[j] < 0) {
          p[j] = i, c[j] = x, q[j] = y, x = -1;
          break;
        } else
          x ^= c[j], y |= 1LL << j;
  }
  x = 0;
  for (int i = 62; i >= 0; i--)
    if (!rk[i] && !(x >> i & 1) && p[i] >= 0) x ^= c[i], b[i] ^= 1;
  for (int i = 62; i >= 0; i--)
    if (rk[i] && !(x >> i & 1) && p[i] >= 0) x ^= c[i], b[i] ^= 1;
  for (int i = 0; i < 63; i++)
    if (b[i] && rk[i])
      for (int j = 0; j < 63; j++)
        if (q[i] >> j & 1) b[j] ^= 1;
  for (int i = 0; i < 63; i++)
    if (b[i] && !rk[i])
      for (int j = 0; j < 63; j++)
        if (q[i] >> j & 1) b[j] ^= 1;
  for (int i = 0; i < 63; i++)
    if (b[i]) o[p[i]] = 1;
  for (int i = 0; i < n; i++) e[o[i]] ^= a[i];
  for (int i = 0; i < n; i++) printf("%d%s", o[i] + 1, i < n - 1 ? " " : "\n");
  return 0;
}
