func_code_string: #include <bits/stdc++.h>   using namespace std;   int pos[1 << 12], num[1 << 12];   int p[1 << 12], q[1 << 12];   void maintain(int x, int y) {     for (;;) {       int t = pos[q[x] ^ num[x]];       if (t == x)         return;       else if (t == y) {         swap(p[x], p[y]);         swap(pos[p[x]], pos[p[y]]);         return;       }       swap(q[y], q[t]);       swap(p[x], p[y]);       swap(pos[p[x]], pos[p[y]]);       swap(p[x], p[t]);       swap(pos[p[x]], pos[p[t]]);       x = t;     }   }   int fir[1 << 12];   int main() {     int n;     scanf( %d , &n);     int s = 0;     for (int i = 0; i < (1 << n); i++) {       scanf( %d , &fir[i]);       s ^= fir[i];     }     if (s) {       puts( Fou );       return 0;     }     for (int i = 0; i < (1 << n); i++) p[i] = q[i] = pos[i] = i;     for (int i = 0; i < (1 << n) - 1; i++) {       num[i + 1] ^= (num[i] ^ fir[i]);       num[i] = fir[i];       maintain(i, i + 1);     }     puts( Shi );     for (int i = 0; i < (1 << n); i++) printf( %d  , p[i]);     printf(  n );     for (int i = 0; i < (1 << n); i++) printf( %d  , q[i]);     printf(  n );     return 0;   }   