Олимпиадный тренинг

Задача . E. Xor-перестановки


У жабы Михаила есть \(2^k\) целых чисел \(a_1, a_2, \ldots, a_{2^k}\).

Найдите две такие перестановки \(p\) и \(q\) целых чисел \(0, 1, \ldots, 2^k-1\), что \(a_i\) равно \(p_i \oplus q_i\) для всех возможных \(i\), или определите, что таких перестановок нет. Здесь \(\oplus\) обозначает операцию побитовое исключающее ИЛИ.

Входные данные

В первой строке записано одно целое число \(k\) (\(2 \leq k \leq 12\)), обозначающее, что размер массива равен \(2^k\).

Во второй строке записаны \(2^k\) целых чисел, разделенных пробелами: \(a_1, a_2, \ldots, a_{2^k}\) (\(0 \leq a_i < 2^k\)) — элементы данного массива.

Выходные данные

Если данный массив не может быть представлен как поэлементный XOR двух перестановок целых чисел \(0, 1, \ldots, 2^k-1\), выведите «Fou».

В противном случае выведите «Shi» в первой строке.

Следующие две строки должны содержать описания подходящих перестановок. Первая из этих строк должна содержать \(2^k\) целых чисел, разделенных пробелами, \(p_{1}, p_{2}, \ldots, p_{2^k}\), и вторая должна содержать \(2^k\) целых чисел, разделенных пробелами, \(q_{1}, q_{2}, \ldots, q_{2^k}\).

Все элементы \(p\) и \(q\) должны быть от \(0\) до \(2^k - 1\) включительно; \(p_i \oplus q_i\) должно быть равно \(a_i\) для всех \(i\) таких, что \(1 \leq i \leq 2^k\). Если существует несколько возможных решений, вы можете вывести любое.


Примеры
Входные данныеВыходные данные
1 2
0 1 2 3
Shi
2 0 1 3 
2 1 3 0
2 2
0 0 0 0
Shi
0 1 2 3 
0 1 2 3
3 2
0 1 2 2
Fou

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя