Гра процесора#2559

Гра процесора

1 секунда
64 мегабайти
Дуже складна

Курсова робота Васі Пупкіна з електроніки — створити простий мікропроцесор. Згідно із завданням, цей мікропроцесор має лише три регістри: акумулятор, покажчик інструкцій та покажчик стека. Акумулятор має біт, покажчик інструкцій і покажчик стека — по біт кожен. Акумулятор може зберігати як додатні, так і від'ємні числа (у двійковому додатковому коді: двійковий додатковий код від'ємного числа дорівнює різниці між 2^{60} та абсолютним значенням цього числа. Наприклад, у десятковому двійковому додатковому коді — , а у двійковому вигляді — ).

Процесор може виконувати такі команди ( — акумулятор, — покажчик інструкцій, — покажчик стека, — елемент стека за адресою ):

Програма знаходиться в комірках пам'яті з адресами від до . Кожна комірка пам'яті може містити рівно одну команду (включаючи константне значення, якщо воно є). Перед початком виконання в акумулятор встановлюється значення, яке потрібно обробити, а регістри і дорівнюють нулю. Результатом обчислення є значення акумулятора після зупинки програми.

Дано програму для мікропроцесора. Напишіть програму, яка обчислює результат для кожного поданого значення акумулятора.

Вхідні дані

У першому рядку задано два цілих числа і через пробіл: — кількість команд у програмі; — кількість значень акумулятора, для яких необхідно обчислити результат. Далі рядків містять команди у такому форматі:

"Адреса комірки пам’яті", "пробіл", "мнемоніка команди" ["пробіл", "аргумент"]

Команди подано підряд — починаючи з комірки з адресою і до комірки з адресою n-1.

Після програми подано цілих чисел a_i — початкові значення акумулятора, які потрібно обробити мікропроцесором. Числа задані через пробіл.

1 \le n \le 128. 1 \le m \le 10^3. -2^{59} \le a_i < 2^{59}.

Усі мнемоніки подано великими латинськими літерами, константа задається десятковим числом (можливо, зі знаком) у межах -2^{59} \le X < 2^{59}. Для команди 0 \le X \le 127.

Задана програма має скінченний час виконання і ніколи не переповнює стек.

Вихідні дані

У першому рядку виведіть одне ціле число — кількість обчислених значень. У наступних рядках виведіть результати обчислень для вхідних значень a_i у тому ж порядку, як і a_i, по одному у кожному рядку.

Приклади

Приклад 1

Loading
Loading