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