eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Трійкова логіка

Трійкова логіка

Ліміт часу 1 секунда
Ліміт використання пам'яті 256 MiB

Розповідають, що на початку зародження програмування подружжя програмістів, які не були програмістами (уявіть собі - таке також іноді має місце), вказували своїм подружжям на відірваність від життя строго двійкової логіки. Уявіть собі, що критиці піддавався навіть всім відомий оператор розгалуження у тому чи іншому виді реалізації практично у всіх програмістських інструментальних засобах. Скажу по секрету, що відомий проект розширеного оператора ЯКЩО ТО ІНАКШЕ АЛЕ !? - з обов'язковим використанням подвійного символу "!?" у якості його ознаки завершення. Кажуть, що саме ця обставина стимулювала розвиток різних видів недвійкової логіки, а також появі різних варіантів оператору вибору (перемикання)... Поки ще немає офіційного статистичного звіту про те, як впинули ці новації на внутрісімейний клімат сімей, у яких лише один із подружжя є програмістом, але висновок про надзвичайну важливість ролі подружжя програмістів у процесі розвитку програмування можна зробити однозначно.

Нехай задано вираз, складений з чисел 0, 1, 2, змінних, які можуть набувати лише одне з цих значень (0, 1, 2) а також операцій порівняння, логічного множення, заперечення і "строгого" логічного додавання (аналог виключного або), визначених у відповідності з наступними таблицями:

Будемо вважати, також визначеними операції ">" ">=" "<>" у відповідності з наступними визначеннями. Для довільних двох x, y, значення яких 0, 1 або 2:

  • x>y рівносильно !(x

  • x>=y рівносильно (x>y)|(x=y)

  • x<>y рівносильно !(x=y)

Приорітети операцій наведено нижче у порядку спадання:

!

< > <= >=

= <>

^

|

У виразі можуть бути використані круглі дужки. Для заданого виразу і (при необхідності) змінних, які входять до нього, визначити значення цього виразу.

Вхідні дані

Перший рядок містить одне число, кількість тестових прикладів, яка не перевищує 1000 і не менше 1. Далі йде відповідна кількість тестових прикладів. Кожен тестовий приклад починається з рядка, який містить заданий вираз. За рядком, який містить вираз, йде послідовність із не менше одного рядка, кожен з яких містить по 3 числа, записаних через пропуск - відповідно, значення x, y, z. Ознакою кінця цієї послідовності рядків буде рядок з єдиним числом, рівним 3.

Вираз не містить пропусків і може містити не більше трьох односимвольних змінних. У якості змінних можуть бути використані лише 'x', 'y', 'z'. Довжина кожного виразу не перевищує 100.

Вихідні дані

Вихідний файл містить значення виразів, приведених у окремих рядках у послідовності, яка відповідає наведеній у вхідному файлі.

Приклад

Вхідні дані #1
2
2&1|1<=1^(2|1)
1 1 1
3
x&z|x<=z^(x|1)
2 1 1
0 0 1
3
Вихідні дані #1
1
2
0
Автор Т.Заркуа
Джерело Зимові збори у Харкові 2010 День 7