#include <bits/stdc++.h>
using namespace std;
inline void open(const char *s) {}
inline int rd() {
  static int x, f;
  x = 0;
  f = 1;
  char ch = getchar();
  for (; ch < '0' || ch > '9'; ch = getchar())
    if (ch == '-') f = -1;
  for (; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
  return f > 0 ? x : -x;
}
const int N = 1 << 12;
int n, pos[N], a[N], b[N];
int p[N], q[N];
void fix(int x, int y) {
  while (1) {
    int t = pos[q[x] ^ a[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 main() {
  n = rd();
  int s = 0;
  for (int i = 0; i <= (1 << n) - 1; i++) {
    b[i] = rd();
    s ^= b[i];
  }
  if (s) return puts("Fou"), 0;
  for (int i = 0; i <= (1 << n) - 1; i++) p[i] = q[i] = pos[i] = i;
  for (int i = 0; i <= (1 << n) - 1; i++) {
    a[i + 1] ^= (a[i] ^ b[i]);
    a[i] = b[i];
    fix(i, i + 1);
  }
  puts("Shi");
  for (int i = 0; i <= (1 << n) - 1; i++) cout << p[i] << ' ';
  cout << '\n';
  for (int i = 0; i <= (1 << n) - 1; i++) cout << q[i] << ' ';
  cout << '\n';
  return 0;
}
