A. Короткий код
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Петя выучил новый язык программирования 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 строках выведите команды в том же формате, что и во входных данных.

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

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

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

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