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