Олимпиадный тренинг

Задача . A. Короткий код


Петя выучил новый язык программирования CALPAS. Программа на этом языке всегда принимает на вход одно неотрицательное целое число и возвращает также неотрицательное целое число.

В языке есть только три команды: применить побитовую операцию AND, OR или XOR с данной константой к текущему числу. Программа может содержать произвольную последовательность таких операций с произвольными константами от 0 до 1023. При выполнении программы команды поочередно (в заданном порядке) применяются к аргументу, и возвращается последнее получившееся число.

Петя написал на этом языке программу, однако она получилась слишком длинной. Напишите программу на языке CALPAS, которая делает то же самое, что и Петина программа, и при этом состоит не более чем из 5 команд. Ваша программа должна возвращать тот же результат, что и Петина, для любого аргумента от 0 до 1023.

Входные данные

В первой строке находится целое число n (1 ≤ n ≤ 5·105) — количество команд.

В следующих n строках находятся команды. Команда состоит из символа, означающего операцию («&», «|» или «^» для операций AND, OR или XOR, соответственно) и константы xi (0 ≤ xi ≤ 1023), соответствующей этой операции.

Выходные данные

Выведите число k (0 ≤ k ≤ 5) — длину вашей программы.

В следующих k строках выведите команды в том же формате, что и во входных данных.

Примечание

Вы можете прочитать про битовые операции в https://ru.wikipedia.org/wiki/Битовые операции.

Второй пример:

Пусть программа приняла на вход число x. Тогда результатом Петиной программы будет ((x&1)&3)&5 = x&(1&3&5) = x&1. Таким образом, результаты программ всегда совпадают.


Примеры
Входные данныеВыходные данные
1 3
| 3
^ 2
| 1
2
| 3
^ 2
2 3
& 1
& 3
& 5
1
& 1
3 3
^ 1
^ 2
^ 3
0

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя