2016, Отборочный контест Самарского университета на четвертьфинал ACM ICPC
A. Шары в урне
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Серёжа участвует в телевизионном шоу «Сражение предсказателей», в очередном выпуске которого задачей участников является угадывание цвета шаров, доставаемых ведущим из непрозрачной урны. Он уже выяснил с помощью спиритического ритуала, что в урне лежат шары n различных цветов, причём шаров i-го цвета в ней лежит в точности ai штук. Ведущий планирует наугад доставать шары по одному, пока урна не станет пустой, а Серёжа должен перед каждым доставанием назвать цвет шара, который достанет ведущий. К сожалению, духи предков отказываются помогать ему, поэтому придётся полагаться на интуицию. Серёжа хотел бы угадать цвет как можно большего количества шаров в худшем случае и теперь задаётся вопросом, как много раз ему удастся угадать наверняка.

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

Первая строка содержит единственное целое число n (1 ≤ n ≤ 2·105) — количество различных цветов.

Вторая строка содержит n целых чисел через пробел: ai (1 ≤ ai ≤ 109) — количество шаров i-го цвета в урне.

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

Выведите единственное целое число — максимальное количество шаров, цвет которых Серёже точно удастся угадать.

Примеры
Входные данные
4
5 2 2 9
Выходные данные
9
Входные данные
3
1 2 1
Выходные данные
2

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

Один сказочный король до смерти ненавидел драконов. Мало того, что эти монстры сжигают дотла целые деревни, воруют принцесс и охраняют сокровища, которые им совершенно не нужны, так они ещё и неприлично часто упоминаются в условиях задач по программированию. Чтобы покончить с их тиранией, он решил собрать армию и уничтожить этих проклятых созданий раз и навсегда.

Король выяснил, что всего существует n драконов, для победы над i-ым из которых требуется армия из ai солдат, причём в процессе сражения bi из них будут убиты. Теперь он хотел бы определить, какое наименьшее количество солдат ему нужно собрать, чтобы убить всех драконов. Королю не принципиально, в каком порядке убивать этих драконов: главное, чтобы ни один из них не остался в живых.

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

Первая строка содержит единственное целое число n (1 ≤ n ≤ 2·105) — количество драконов.

Следующие n строк содержат по два целых числа через пробел: ai и bi (1 ≤ bi ≤ ai ≤ 109) — количество солдат, требующихся для убийства i-го дракона, и количество солдат, которое погибнет в сражении с ним.

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

Выведите единственное целое число — минимальное количество солдат, достаточное, чтобы убить всех драконов.

Примеры
Входные данные
2
7 4
5 1
Выходные данные
8
Входные данные
3
4 1
6 4
5 3
Выходные данные
10

C. Математическое поле экспериментов
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Математик Миша мечтает о том, как он станет министром образования России и опробует свою оригинальную экспериментальную образовательную программу по математике в начальных классах школы. Суть этой программы состоит в том, что вместо изучения арифметических операций в поле вещественных чисел, первоклассники будут изучать эти операции в конечных полях по модулю простых целых чисел. Под впечатлением от своей идеи Миша решил написать новейший учебник арифметики для первых классов и уже составляет задачи и упражнения на тему дискретного извлечения квадратного корня по модулю.

Входными данными в каждой такой задаче является целое число x, из которого требуется извлечь квадратный корень, и простое число p, по модулю которого это требуется сделать. Правильным ответом на такую задачу является квадратный корень из x по модулю p, то есть такое целое число s, что s·s и x дают один и тот же остаток от деления на p. Иными словами, число должно нацело делиться на p. Нужно заметить, что иногда для заданного x подходящего квадратного корня s не существует.

Чтобы автоматизировать процесс составления задач на эту тему, Миша решил написать программу, которая для заданного простого числа p находит квадратные корни по модулю p из всех целых чисел x от 0 до включительно, либо сообщает, что соответствующего квадратного корня не существует.

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

Первая строка содержит единственное простое целое число p (2 ≤ p ≤ 106). Простое число имеет ровно два различных делителя.

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

Выведите p неотрицательных целых чисел через пробел, i-ое из которых должно быть равно квадратному корню из по модулю p. Ни одно из чисел не должно превышать . Если некоторого квадратного корня не существует, выведите  - 1 вместо него, а если существует несколько подходящих целых чисел от 0 до включительно, каждое из которых является квадратным корнем из соответствующего числа, то выведите любое из них.

Примеры
Входные данные
5
Выходные данные
0 4 -1 -1 3
Входные данные
7
Выходные данные
0 1 3 -1 5 -1 -1
Примечание

В первом примере: , .

D. За стеной
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Офицер космического десанта Сара оказалась с небольшим отрядом последователей на враждебной планете, полной представителей инопланетной расы зорков, отличающихся радикально экстремистскими взглядами в отношении представителей других рас. Сражаться с зорками было бы проявлением неуважения к их богатой культуре, так что она хочет как можно скорее окружить свою базу стеной, за которой можно будет в безопасности дожидаться обещанного командованием подкрепления.

Карта временно безопасного участка местности представляет собой клетчатое поле, состоящее из n горизонтальных рядов по m квадратов в каждом, причём база находится в c-м квадрате r-го ряда. Сара уже оценила, что для постройки стены в квадрате, находящемся в i-м ряду на j-й позиции, требуется ai, j единиц времени. Сара считает, что если в некотором квадрате построена стена, то зорки не смогут пройти через него. Требуется построить стены так, чтобы зорки не смогли добраться до базы из-за пределов клетчатого поля, перемещаясь по клеткам, имеющим общую сторону, и не заходя при этом на клетки со стеной. На постройку всех стен должно быть затрачено как можно меньше единиц времени, учитывая, что стены строятся последовательно одна за другой, а между постройками стен в разных клетках время не тратится. Само собой, нельзя строить стену в клетке, в которой находится база Сары.

Сара задумалась, в каких именно клетках нужно построить стену, чтобы она удовлетворяла указанным требованиям. К счастью, в её отряде нашёлся программист, который взялся решить эту задачу.

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

Первая строка содержит четыре целых числа через пробел: n, m, r и c (3 ≤ n, m ≤ 50, 2 ≤ r ≤ n - 1, 2 ≤ c ≤ m - 1) — размеры поля по вертикали и по горизонтали соответственно, а также номер строки и столбца, в которых находится база. Следующие n строк содержат по m целых чисел в каждой: ai, j (0 ≤ ai, j ≤ 500) — количество единиц времени, требующихся для постройки стены в клетке, находящейся в i-й строке в j-м столбце. Гарантируется, что ar, c = 0.

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

В первой строке выведите единственное число — наименьшее количество единиц времени, необходимое для постройки стен.

Далее в n строках выведите по m символов. В i-й строке на j-й позиции выведите символ «.», если в соответствующей клетке не требуется строить стену, либо символ «X», если в соответствующей клетке необходимо построить стену. Если существует несколько правильных планов застройки, выведите любой из них.

Примеры
Входные данные
3 4 2 2
9 1 1 9
1 0 9 1
9 1 1 9
Выходные данные
6
.XX.
X..X
.XX.
Входные данные
3 3 2 2
1 0 1
9 0 6
1 8 1
Выходные данные
23
.X.
X.X
.X.

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

В одном самарском вузе прошёл отбор на международные соревнования по фигурному программированию, но тренерский штаб, входящий в состав жюри, никак не может определиться, сколько лучших команд отобрать для участия в следующем этапе. В фигурном программировании тестирующая система не определяет точно количество баллов, набранных участником, а определяет лишь отрезок, в котором это количество баллов лежит. Жюри вправе поставить участнику любое количество баллов из этого отрезка. Всего в отборе участвовали n команд, i-я из которых набрала количество баллов, лежащее на отрезке от li до ri включительно. Жюри хотело бы отправить в следующий этап как можно больше команд, но по правилам для этого они все должны набрать максимальное количество баллов среди всех участников. Какое же наибольшее количество команд можно отправить в следующий этап соревнования при таких условиях?

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

Первая строка содержит единственное целое число n (1 ≤ n ≤ 2·105) — количество команд, участвующих в соревновании.

Следующие n строк содержат по два целых числа через пробел: li и ri ( - 109 ≤ li ≤ ri ≤  + 109) — нижняя и верхняя граница количества баллов для i-й команды.

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

Выведите единственное целое число — наибольшее количество команд, которые могут набрать максимальное количество баллов.

Пример
Входные данные
3
1 3
2 4
4 5
Выходные данные
2

F. Самый слабый ситх
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В одной далёкой-далёкой галактике великая галактическая империя развалилась после смерти императора, и постепенно набирает силы новая коррумпированная галактическая республика. Но злобные ситхи не дремлют: они создали своё сопротивление под названием «Последний орден» и планируют выбрать себе предводителя с помощью честного турнира.

Всего в турнире будут участвовать n оставшихся в живых ситхов, i-ый из которых характеризуется тремя положительными целыми числами: мастерством владения мечом ai, мастерством владения Силой bi и степенью психической уравновешенности ci. Все характеристики всех ситхов попарно различны. Турнир состоит из серий поединков один на один, в каждом из которых принимает участие пара различных ситхов. В таком поединке выигрывает тот ситх, у которого по меньшей мере две из трёх характеристик превышают соответствующие характеристики его противника.

Проблема в том, что турниры ситхов никогда не были направлены на определение самого сильного ситха, способного победить остальных: они были нужны, чтобы выявить самого слабого ситха, который не может выиграть ни одного боя, и в достаточной степени поглумиться над этим неудачником. Похоже, что в этот раз такой ситх станет главой Последнего ордена, так что неплохо бы заранее оценить, кто из участников может им стать.

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

Первая строка содержит единственное целое число n (2 ≤ n ≤ 2·105) — количество ситхов, участвующих в турнире.

Следующие n строк содержат по три целых числа через пробел: ai, bi, ci (1 ≤ ai, bi, ci ≤ 109) — три соответствующих характеристики i-го ситха.

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

В первой строке выведите единственное целое число — количество ситхов, которые не могут выиграть ни одного поединка.

Во второй строке выведите номера этих ситхов через пробел.

Примеры
Входные данные
4
3 11 9
1 4 8
5 2 10
12 7 6
Выходные данные
1
2
Входные данные
3
700 40 1
50 2 800
3 900 60
Выходные данные
0

G. О зорках и топорах
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Зорки не любят представителей других рас. Зорки любят тяжёлые кривые топоры. Прямо сейчас каждый из них собирается выбрать себе подходящий топор и продемонстрировать окопавшимся неподалёку представителям других рас свою неготовность к мирной культурной ассимиляции. Всего имеется n зорков и m топоров, причём i-й зорк хочет взять топор массой не меньше ai и кривизной не меньше bi, а j-й топор имеет массу wj и кривизну cj. Зорки не любят задачи по программированию. Зорки любят тяжёлые кривые топоры. Так что решать, какому зорку какой топор нужно выбрать, придётся вам.

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

Первая строка содержит единственное целое число n (1 ≤ n ≤ 2·105) — количество зорков.

Следующие n строк содержат по два целых числа через пробел: ai и bi (1 ≤ ai, bi ≤ 109) — минимальные масса и кривизна топора, которые устраивают i-го зорка.

Следующая строка содержит единственное целое число m (1 ≤ m ≤ 2·105) — количество топоров.

Следующие m строк содержат по два целых числа через пробел: wj и cj (1 ≤ wj, cj ≤ 109) — масса и кривизна j-го топора.

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

Выведите n целых чисел, i-е из которых равно номеру топора, который нужно выдать i-му зорку, чтобы удовлетворить всем его требованиям. Само собой, нельзя выдать один и тот же топор двум различным зоркам.

Если нет никакой возможности раздать топоры, удовлетворив все требования всех зорков, вместо этого выведите единственное целое число  - 1.

Примеры
Входные данные
3
3 4
5 1
2 6
4
5 7
4 5
3 3
5 2
Выходные данные
2 4 1
Входные данные
2
2 5
4 3
2
5 6
3 4
Выходные данные
-1

H. Улицы исправных фонарей
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Полицейский Анатолий ведёт наружное наблюдение за логовом неорганизованной преступной группировки, занимающейся распространением запрещённых азиатских рисунков. В логово преступников есть всего один вход, являющийся также и единственным выходом из него. Когда очередной человек заходит в логово, Анатолий дописывает в свой блокнот открывающуюся круглую скобку, а когда очередной человек выходит из логова — закрывающуюся.

Длительная слежка нагоняет аппетит, так что Анатолий вынужден поедать пончики, чтобы не умереть с голоду. К сожалению, по окончании слежки Анатолий обнаружил в своих записях множество жирных пятен от пончиков, мешающих разобраться, являются ли некоторые скобки открывающимися или закрывающимися. Чтобы не получить нагоняй от начальства, ему нужно скорее восстановить записи. Он убедился, что перед началом слежки и после её завершения ни одного человека в логове преступников не было.

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

Единственная строка имеет длину не более 5·105 символов и содержит только символы «(», «)» и «?». Символ «(» означает, что очередной человек вошёл в логово преступников, символ «)» означает, что очередной человек вышел из логова преступников, а символ «?» означает, что на этой позиции находится жирное пятно, и невозможно разобрать, какой из первых двух символов там стоял изначально.

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

Выведите восстановленную строку, состоящую только из символов «(» и «)», такую что Анатолий действительно мог записать её в свой блокнот. Если существует несколько подходящих строк, выведите любую из них. Если Анатолий что-то напутал и изначально ошибся в записях, выведите «Impossible» без кавычек.

Примеры
Входные данные
(?(?))
Выходные данные
()(())
Входные данные
()
Выходные данные
()
Входные данные
?(
Выходные данные
Impossible

I. Это полиция
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Юрий Мухоморов работает коррумпированным начальником полиции. Каждый день он должен выставлять полицейских на посты в городе так, чтобы местные криминальные группировки всё равно могли совершать преступления. Город представляет собой n площадей, соединённых m улицами, так что j-я улица соединяет aj-ю и bj-ю площади. Полицейский, размещённый на некоторой площади, может вести наблюдение как за этой площадью, так и за всеми площадями, соединёнными с этой площадью некоторой улицей. Юрий хочет так расставить полицейских, чтобы по крайней мере одна площадь оказалась не под наблюдением, что позволит организованным преступникам проворачивать на этой площади свои тёмные делишки. Само собой, Юрий не хочет навлекать на себя подозрений, поэтому планирует выставить полицейских на как можно большее количество городских площадей.

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

Первая строка содержит два целых числа через пробел: n и m (1 ≤ n ≤ 2·105, 0 ≤ m ≤ 2·105) — количества площадей и улиц города соответственно.

Следующие m строк содержат по два целых числа через пробел: aj и bj (1 ≤ aj, bj ≤ n, aj ≠ bj) — номера площадей, соединённых j-й улицей. Каждая пара площадей может быть соединена не более чем одной улицей.

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

Выведите n целых чисел через пробел. На i-й позиции выведите 1, если на i-й площади необходимо поставить полицейского, либо 0, если не нужно этого делать. Если существует несколько правильных ответов, выведите любой из них.

Примеры
Входные данные
5 5
1 2
2 3
3 4
4 5
5 1
Выходные данные
0 0 1 1 0
Входные данные
6 4
1 2
3 4
3 5
3 6
Выходные данные
0 0 1 1 1 1

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

В одном крупном юридическом вузе большая часть студентов предпочитает участию в соревнованиях по римскому праву посещение фотоклуба. Участники этого клуба посещают разные интересные места и фотографируют друг друга на их фоне, чтобы потом оценивать собственные фотографии.

Как-то раз они посещали невероятно длинную улицу, на которой находятся n архитектурных сооружений, расположенных в ряд одно за другим. Каждый участник клуба сделал по одной фотографии, на которой видно некоторый отрезок улицы, включающий, кроме самих участников и прохожих, несколько последовательно расположенных архитектурных сооружений. Иными словами, если занумеровать все архитектурные сооружения в том порядке, в котором они стоят на этой улице, то на каждой фотографии будут видны несколько архитектурных сооружений, имеющих последовательные номера.

Как-то тренер команд этого вуза по римскому праву краем глаза увидел выставку фотографий с той улицы. Он не обратил внимания, сколько конкретно фотографий на ней было представлено, но заметил, что i-е архитектурное сооружение появлялось на ai фотографиях. Теперь он хотел бы оценить, какое минимальное количество студентов посещает фотоклуб, учитывая, что ни один участник не мог представить на выставку больше одной фотографии.

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

Первая строка содержит единственное целое число n (1 ≤ n ≤ 2·105) — количество архитектурных сооружений.

Вторая строка содержит n целых чисел через пробел: ai (0 ≤ ai ≤ 109) — количество фотографий, на которых изображено i-е архитектурное сооружение.

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

Выведите единственное целое число — минимальное количество студентов, посещающих фотоклуб.

Примеры
Входные данные
4
1 3 2 0
Выходные данные
3
Входные данные
6
1 2 3 1 2 3
Выходные данные
5

K. Месть дракона
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Один сказочный король до смерти ненавидел драконов. Он собрал огромную армию и убил их всех до единого. Но он упустил из вида одно небольшое драконье яйцо, приняв его за камень, так что из этого яйца вылупился последний дракон. Быстро установив виновника геноцида остальных драконов, последний дракон сильно разозлился и разрушил всё королевство. Армии, чтобы от него отбиваться, совсем не осталось, поскольку она вся была потрачена на уничтожение всех остальных драконов.

Сказочное королевство представляет собой координатную плоскость. Король с остатками армии укрылся во дворце, который находится в точке с координатами . Дворец надёжно защищён, и дракон не способен его разрушить. Поняв это, дракон спрятался в точке с координатами в надежде подкараулить короля, когда тот покинет дворец. Король вскоре узнал о местонахождении дракона и теперь пытается оценить опасность ситуации.

Если король будет находиться за пределами дворца, то в любой момент дракон может это заметить и вылететь за ним из своего логова. Вылет дракона немедленно будет замечен стражей, и король тут же начнёт равномерно прямолинейно двигаться в сторону дворца, пока не окажется в безопасности за его стенами. Дракон же жаждет мести, поэтому просто в каждый момент времени будет равномерно прямолинейно двигаться точно в направлении текущего местоположения короля. Король уже стар, а дракон в самом расцвете сил, так что скорость перемещения короля ровно в два раза меньше, чем скорость перемещения дракона. Король хотел бы определить, насколько сильно дракон ущемляет свободу его передвижения, поэтому желает узнать площадь безопасного участка плоскости, по которому он может разгуливать без опасений, что в случае вылета дракон догонит его раньше, чем он доберётся до дворца.

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

Первая строка содержит два целых числа через пробел: xp и yp ( - 1000 ≤ xp, yp ≤  + 1000) — координаты дворца.

Вторая строка содержит два целых числа через пробел: xd и yd ( - 1000 ≤ xd, yd ≤  + 1000) — координаты логова дракона.

Эти две точки не совпадают.

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

Выведите единственное вещественное число — площадь безопасной части плоскости. Абсолютная или относительная погрешность не должна превышать 10 - 6.

Пример
Входные данные
0 0
1 0
Выходные данные
0.916297857297023

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

В массовой онлайновой многопользовательской ролевой видеоигре «Путь изгнанника» развитие игрового персонажа осуществляется путём приобретения талантов за специальные очки талантов, получаемые в процессе игры. Некоторые таланты зависят от других. Талант можно приобрести, только если у персонажа есть хотя бы один из талантов, от которых он зависит. Также на приобретение таланта тратится одно очко таланта. Один талант имеется у персонажа с самого начала игры.

Школьник Василий решил записать видеоинструкцию по правильному развитию персонажа, следуя которой, можно легко побеждать других игроков и неигровых персонажей. Он уже занумеровал все талантов целыми числами от 0 до n включительно, так чтобы имеющийся с самого начала игры талант имел номер 0. Василий считает, что для правильного развития персонажа необходимо во что бы то ни стало приобрести два различных таланта, имеющие в его нумерации номера a и b, потому что эти таланты недостаточно хорошо сбалансированы и намного сильнее всех остальных. Приобрести эти таланты нужно как можно раньше, поэтому Василий задумался, какое минимальное количество очков таланта необходимо потратить с начала игры, чтобы это сделать.

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

Первая строка содержит четыре целых числа через пробел: n, m, a и b (2 ≤ n, m ≤ 2·105, 1 ≤ a, b ≤ n, a ≠ b) — общее количество талантов, если не считать нулевой, количество зависимостей между талантами, а также номера двух талантов, которые необходимо приобрести.

Следующие m строк содержат по два целых числа через пробел: xj и yj (0 ≤ xj ≤ n, 1 ≤ yj ≤ n, xj ≠ yj) — указание на то, что талант yj зависит от таланта xj. Гарантируется, что, располагая неограниченным количеством очков талантов, можно приобрести все талантов.

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

Выведите единственное целое число — минимальное количество очков талантов, достаточное для приобретения талантов a и b.

Примеры
Входные данные
6 8 4 6
0 1
0 2
1 2
1 5
2 3
2 4
3 6
5 6
Выходные данные
4
Входные данные
4 6 3 4
0 1
0 2
1 3
2 4
3 4
4 3
Выходные данные
3

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

Специальный агент Адам взламывает калькулятор члена секретной масонской организации иллюминатов, чтобы получить доступ к информации о её лидерах. Он уже выяснил, что всего в организацию входит n человек, каждый из которых имеет свой порядковый номер. Кроме того, у каждого из них есть уровень, представляющий собой целое число от 1 до n включительно. Уровни всех членов этой организации попарно отличаются. Любой иллюминат может командовать другими иллюминатами более низкого уровня, но вынужден подчиняться иллюминатам более высокого уровня. Адам полагает, что утечка информации об иллюминате наивысшего n-го уровня может его дискредитировать, поэтому ему интересен иллюминат с уровнем n - 1, подчиняющийся только иллюминату с наивысшим уровнем.

Доступ к секретной сети иллюминатов получить непросто, поэтому единственный вид запросов, которые может делать Адам — это запросы на сравнение уровней двух иллюминатов с заданными порядковыми номерами. В ответ на такой запрос он получает ответ, больше уровень первого иллюмината, чем уровень второго, меньше, или же их уровни равны. Количество запросов ограничено, но из-за особого отношения калькулятора иллюминатов к степеням двойки Адам может безопасно выполнить целых запросов, прежде чем его присутствие в сети будет замечено.

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

Это интерактивная задача. Ваша программа должна общаться с программой жюри, используя для этого стандартные потоки ввода и вывода.

Сначала в отдельной строке записано единственное целое число n (2 ≤ n ≤ 1000) — количество иллюминатов.

После этого ваша программа может делать запросы на сравнение двух иллюминатов. Для этого в отдельной строке выведите символ «?» и два целых числа через пробел после него — порядковые номера иллюминатов, которых вы хотите сравнить. В ответ на это в отдельной строке будет записан единственный символ «<», если первый иллюминат имеет уровень меньше, чем второй, символ «>», если первый иллюминат имеет уровень больше, чем второй, либо «=», если указанные иллюминаты имеют одинаковый уровень. Вы можете сделать не более чем таких запросов.

Когда вы узнаете ответ, выведите символ «!» и единственное целое число через пробел — номер иллюмината, имеющего уровень n - 1.

Пример
Входные данные
5
>
>
>
>
>
<
>
Выходные данные
? 1 2
? 1 3
? 1 4
? 1 5
? 2 3
? 2 4
? 4 5
! 4
Примечание

Обратите внимание, что после вывода каждого сообщения ваша программа должна очищать потоковый буфер, чтобы выведенная вами информация дошла до программы жюри: например, это делают вызовы «fflush(stdout)» или «cout.flush()» в C++, «System.out.flush()» в Java, «Console.Out.Flush()» в C#, «flush(output)» в Pascal, «sys.stdout.flush()» в Python.