#include <bits/stdc++.h>
using namespace std;
long long n, sd, i, j, top, s, ans[100005], pos[100005], a[100005];
bitset<100005> f[62], g[62];
void read(long long &p) {
  p = 0;
  char x = getchar();
  while (x < '0' || x > '9') x = getchar();
  while (x >= '0' && x <= '9') {
    p = p * 10 + x - '0';
    x = getchar();
  }
}
int main() {
  read(n);
  for (i = 1; i <= n; ++i) {
    read(a[i]);
    s ^= a[i];
    for (j = 0; j <= 60; ++j)
      if ((a[i] >> j) & 1) f[j][i] = 1;
  }
  for (sd = 0; sd <= 1; ++sd)
    for (i = 60; i >= 0; --i)
      if (((s >> i) & 1) == sd) {
        top++;
        g[top] = f[i];
        g[top][n + 1] = (!sd);
        for (j = 1; j <= top - 1; ++j)
          if (g[top][pos[j]]) g[top] ^= g[j];
        pos[top] = n + 2;
        for (j = 1; j <= n; ++j)
          if (g[top][j]) {
            pos[top] = j;
            break;
          }
        if (pos[top] > n) {
          top--;
          continue;
        }
        for (j = 1; j <= top - 1; ++j)
          if (g[j][pos[top]]) g[j] ^= g[top];
      }
  for (i = 1; i <= top; ++i)
    if (g[i][n + 1]) ans[pos[i]] = 1;
  for (i = 1; i <= n; ++i) {
    if (ans[i])
      putchar('1');
    else
      putchar('2');
    if (i == n)
      putchar('\n');
    else
      putchar(' ');
  }
  return 0;
}
