EduBrick

H. Интерактивное слияние

2000 мс · 256 МБ · всё или ничего

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

Жюри загадало два отсортированных по возрастанию массива: a1<…<ana_1 < \ldots < a_n и b1<…<bmb_1 < \ldots < b_m. Все элементы обоих массивов попарно различны. Элементу aia_i жюри дало метку ii, элементу bjb_j — метку n+jn + j. Затем жюри слило массивы в один и отсортировало его по возрастанию; получилась последовательность меток — перестановка из n+mn + m чисел.

Назовите эту перестановку, задав не более 20 вопросов. Каждый вопрос — набор не более чем 10510^5 пар индексов (ik,jk)(i_k, j_k); жюри отвечает строкой из нулей и единиц: ноль означает aik<bjka_{i_k} < b_{j_k}, единица — что нет.

Формат ввода

В начале взаимодействия считайте два числа nn и mm (1≤n,m≤1051 \le n, m \le 10^5).

Формат вывода

Чтобы задать вопрос, выведите строку ? q i_1 j_1 i_2 j_2 … — количество пар и сами пары (1≤q≤1051 \le q \le 10^5, 1≤ik≤n1 \le i_k \le n, 1≤jk≤m1 \le j_k \le m). В ответ придёт строка из qq символов.

Чтобы назвать ответ, выведите ! и затем n+mn + m чисел — искомую перестановку меток. После этого завершите работу. Вопросов не больше 20, после каждого вывода делайте flush.

Примеры

ввод
2 2
10
вывод
? 2 1 1 1 2
! 3 1 2 4
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.