Это интерактивная задача!
У Ехаба есть загаданная перестановка \(p\) длины \(n\), состоящая из элементов от \(0\) до \(n-1\). По какой-то причине вы хотите выяснить перестановку. Для этого вы можете спросить у Ехаба \(2\) разных индекса \(i\) и \(j\), и он ответит \((p_i|p_j)\), где \(|\) обозначает операцию побитового ИЛИ.
У Ехаба есть достаточно свободного времени, чтобы ответить на \(4269\) вопросов, и, несмотря на то, что ему несложно отвечать на так много вопросов, ему лень играть в ваши глупые игры, поэтому он заранее зафиксирует перестановку и не изменит ее в зависимости от ваших запросов. Можете ли вы угадать перестановку?
Протокол взаимодействия
Чтобы задать вопрос, выведите "? \(i\) \(j\)" (без кавычек, \(i \neq j\)) Затем вы должны считать ответ, который будет равен \((p_i|p_j)\).
Если мы ответим \(-1\) вместо правильного ответа, это означает, что вы превысили количество запросов или сделали неверный запрос.
Завершите программу сразу после получения \(-1\), и вы увидите вердикт Неправильный ответ. В противном случае вы можете получить произвольный вердикт, потому что ваше решение будет продолжать читать из закрытого потока.
Чтобы дать ответ, выведите "! \(p_1\) \(p_2\) \(\ldots\) \(p_n\)" (без кавычек). Заметьте, что вывод ответа не считается одним из \(4269\) запросов.
После вывода запроса не забудьте вывести перевод строки, и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для сброса буфера используйте:
- fflush(stdout) или cout.flush() в C++;
- System.out.flush() в Java;
- flush(output) в Pascal;
- stdout.flush() в Python;
- смотрите документацию для других языков.
Взломы:
Первая строка должна содержать целое число \(n\) (\(3 \le n \le 2^{11}\)) — длину перестановки \(p\).
Вторая строка должна содержать \(n\) целых чисел, разделенных пробелами \(p_1\), \(p_2\), \(\ldots\), \(p_n\) (\(0 \le p_i < n\)) — элементы перестановки \(p\).
Примечание
В первом примере перестановка равна \([1,0,2]\). Вы начинаете с вопроса \(p_1|p_2\), а Ехаб отвечает \(1\). Затем вы спрашиваете \(p_1|p_3\), а Ехаб отвечает \(3\). Наконец, вы спрашиваете о \(p_2|p_3\), а Ехаб отвечает \(2\). После этого вы угадываете перестановку.