Процесор 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.
Приклад 1