func_code_string: #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;   }   