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