B. Поиск ИЛИ суммы
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Это интерактивная задача.

Существуют два скрытых целых неотрицательных числа $$$x$$$ и $$$y$$$ ($$$0 \leq x, y \lt 2^{30}$$$). Вы можете задать не более $$$2$$$ запросов следующего вида.

  • Выберите целое неотрицательное число $$$n$$$ ($$$0 \leq n \lt 2^{30}$$$). Жюри ответит значением $$$(n \mathbin{|} x) + (n \mathbin{|} y)$$$, где $$$|$$$ обозначает операцию побитового ИЛИ.

После этого жюри даст вам другое целое неотрицательное число $$$m$$$ ($$$0 \leq m \lt 2^{30}$$$). Вы должны ответить правильным значением $$$(m \mathbin{|} x) + (m \mathbin{|} y)$$$.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Протокол взаимодействия

Жюри выбирает два скрытых целых числа $$$x$$$ и $$$y$$$ ($$$0 \leq x, y \lt 2^{30}$$$). Обратите внимание, что $$$x$$$ и $$$y$$$ могут быть разными для разных наборов входных данных.

Интерактор в этой задаче не адаптивен. Другими словами, целые числа $$$x$$$ и $$$y$$$ не меняются в процессе взаимодействия.

Чтобы задать вопрос, выберите целое число $$$n$$$ ($$$0 \leq n \lt 2^{30}$$$) и выведите $$$n$$$ на отдельной строке.

Вы получите одно целое число — значение$$$(n \mathbin{|} x) + (n \mathbin{|} y)$$$.

Вы можете задать не более $$$2$$$ вопросов данного вида.

После того как вы закончите свои вопросы, выведите «!» на отдельной строке. Вы получите целое число $$$m$$$ ($$$0 \leq m \lt 2^{30}$$$). Обратите внимание, что значение $$$m$$$ также фиксировано до начала взаимодействия.

Вы должны вывести только значение $$$(m \mathbin{|} x) + (m \mathbin{|} y)$$$ на отдельной строке. Обратите внимание, что эта строка не считается запросом и не учитывается при подсчете количества заданных запросов.

После этого переходите к следующему набору входных данных.

Если вы сделаете более $$$2$$$ запросов во время взаимодействия, ваша программа должна немедленно завершиться, и вы получите вердикт Неправильный ответ. В противном случае вы можете получить произвольный вердикт, потому что ваше решение продолжит чтение из закрытого потока.

После вывода каждого запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для этого используйте:

  • fflush(stdout) или cout.flush() в C++;
  • sys.stdout.flush() в Python;
  • смотрите документацию для других языков.

Взломы

Чтобы совершить взлом, следуйте формату теста ниже.

Первая строка содержит количество наборов $$$t$$$ ($$$1 \le t \le 10^4$$$). Описание наборов следует далее.

Первая и единственная строка каждого набора содержит три целых числа $$$x, y, m$$$ ($$$0 \leq x, y, m \lt 2^{30}$$$).

Пример
Входные данные
2

3

4

1

0

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

0

1

!

4

0

!

2
Примечание

В первом наборе входных данных взаимодействие происходит следующим образом.

РешениеЖюриОбъяснение
$$$\texttt{2}$$$В тесте 2 набора.
$$$\texttt{}$$$В первом наборе $$$x=1$$$ и $$$y=2$$$.
$$$\texttt{0}$$$$$$\texttt{3}$$$Решение запрашивает $$$(0 \mathbin{|} 1) + (0 \mathbin{|} 2)$$$, и жюри отвечает $$$3$$$.
$$$\texttt{1}$$$$$$\texttt{4}$$$Решение запрашивает $$$(1 \mathbin{|} 1) + (1 \mathbin{|} 2)$$$, и жюри отвечает $$$4$$$.
$$$\texttt{!}$$$$$$\texttt{1}$$$Решение запрашивает значение $$$m$$$, и жюри отвечает $$$1$$$.
$$$\texttt{4}$$$Решение знает, что $$$(1 \mathbin{|} x) + (1 \mathbin{|} y)=4$$$ из предыдущих запросов.
$$$\texttt{}$$$Во втором наборе $$$x=0$$$ и $$$y=0$$$.
$$$\texttt{0}$$$$$$\texttt{0}$$$Решение запрашивает $$$(0 \mathbin{|} 0) + (0 \mathbin{|} 0)$$$, и жюри отвечает $$$0$$$.
$$$\texttt{!}$$$$$$\texttt{1}$$$Решение запрашивает значение $$$m$$$, и жюри отвечает $$$1$$$.
$$$\texttt{2}$$$Решение каким-то образом узнаёт, что $$$x=y=0$$$, поэтому отвечает $$$(1 \mathbin{|} 0) + (1 \mathbin{|} 0)=2$$$.

Обратите внимание, что пустые строки в примерах ввода и вывода приведены для ясности и не встречаются в реальном взаимодействии.