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