Две инструкции
Возможно, самой важной инструкцией процессора 8086 является команда "pop sp", которая берёт значение указателя стека с вершины стека.
В дополнение к этой команде в процессоре 80486 была добавлена другая очень важная инструкция для работы с регистром указателя стека - "bswap sp". Она меняет местами старший и младший байт указателя.
"bswap sp" имеет код инструкции 0F CC;
"pop sp" имеет код инструкции 5C;
сегмент памяти имеет длину 65536 байт;
Память считается зацикленной - после ячейки с адресом FFFF идет ячейка с адресом 0000 (все адреса и коды даны в шестнадцатеричной системе счисления);
"pop sp" берет значение двухбайтового слова по адресу, на который указывает sp, и загружает его в sp (младший байт идет первым).
Вам дано начальное значение регистра sp и содержимое памяти. Постройте самую короткую программу, которая после своего завершения получит в sp заданное конечное значение. Программа должна состоять только из операций "pop sp" и "bswap sp".
Входные данные
Первая строка содержит два шестнадцатибитных числа в пределах от 0000 до FFFF - начальное и конечное значение регистра sp. Следующие 4096 строк содержат дамп сегмента памяти.
Дамп задается в формате [8 байт][2 пробела][8 байт], где [8 байт] - это 8 значений последовательных байтов, разделенных одним пробелом. Байт задается как шестнадцатеричное число в пределах от 00 до FF, имеющее ровно две цифры.
Выходные данные
В первой строке выведите число байтов кода в кратчайшей программе в десятичной системе счисления. Начиная со второй строки, выведите дамп кода получившейся программы в том же формате, что и во вводе. Последняя (возможно, незавершенная) строка дампа должна быть обязательно завершена переводом строки без лишних пробелов сразу же после последнего выведенного байта.
Если существует несколько кратчайших программ, выведите лексикографически наименьшую.
Если невозможно решить задачу для заданного дампа и значений sp, выведите единственную строку со словом IMPOSSIBLE.