Codemasters Codecup 2023 - Отборочный тур
A. Рудольф и ягоды
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

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

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

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

Первая строка содержит целое число $$$n$$$ и вещественное число $$$p$$$ ($$$0 \le n \le 10^6, 0.1 \le p \le 1$$$) — количество черной смородины и доля банок со смородиной. Число $$$p$$$ содержит не больше $$$6$$$ знаков после запятой.

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

Выведите единственное вещественное число — долю черной смородины. Гарантируется, что ответ находится в диапазоне от $$$0$$$ до $$$1$$$.

Ответ будет считаться правильным, если его абсолютная или относительная ошибка не превосходит $$$10^{-6}$$$.

Формально, пусть ваш ответ равен $$$a$$$, а ответ жюри равен $$$b$$$. Ваш ответ будет зачтен, если и только если $$$\frac{|a - b|}{\max{(1, |b|)}} \le 10^{-6}$$$.

Примеры
Входные данные
250000 0.5
Выходные данные
0.5000000000
Входные данные
0 0.9
Выходные данные
0.0000000000
Входные данные
100000 0.1
Выходные данные
1.0000000000

B. Рудольф и сообщения
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рудольф решил участвовать в турнире по программированию CodeForSquares CodeCup. Организаторы соревнований используют для связи с участниками начинающий набирать популярность текстовый мессенджер Codegram.

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

К сожалению, Codegram пока ещё недостаточно надежен — при передаче сообщений возможны ошибки: в некоторых словах иногда пропадают отдельные буквы. Хорошо, что в каждом слове может пропасть не более одной буквы! Например, слово codecup при передаче может быть искажено на codecp или на codcup, но не может быть искажено на codecap (одна из букву изменилась на другую) или cdecp (две буквы пропали).

Рудольф так устал, готовясь к турниру, что случайно заснул, не настроив мессенджер. Помогите ему написать программу, которая читает сообщения и определяет, содержало ли какое-то из них важное для него слово codecup.

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

Первая строка содержит одно целое число $$$n$$$ ($$$1 \le n \le 100$$$) — количество слов в сообщении.

Следующая строка содержит $$$n$$$ непустых слов, разделенных одним пробелом, составляющих сообщение. Длина каждого слова от 1 до 25 символов. Слова состоят из строчных букв английского алфавита. В начале и конце строки пробелов нет.

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

Выведите «Yes», если входное сообщение могло содержать слово codecup с учетом ошибок при передаче. Выведите «No», если слова codecup во входном сообщении не могло быть.

Гарантируется, что ошибки при передаче сообщений не затрагивают пробелы, разделяющие слова.

Примеры
Входные данные
4
codeforsquares codecup coming soon
Выходные данные
Yes
Входные данные
3
cdecup is postponed
Выходные данные
Yes
Входные данные
5
abracadabra code cup hello all
Выходные данные
No
Входные данные
3
qwertycodecup coming soon
Выходные данные
No
Входные данные
4
codeforsquares codecap coming soon
Выходные данные
No

C. Рудольф и квадратики
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рудольф тренируется решать задачи на популярном сайте CodeForSquares. Бернард следит за Рудольфом, чтобы тот тренировался достаточно усердно.

Чтобы убедить Бернарда, Рудольф показывает статистику решенных задач. Статистика выглядит следующим образом. Есть картинка, где каждому дню соответствует небольшой квадратик изначально белого цвета. При решении задач в этот день соответствующий квадратик начинает перекрашиваться в зеленый цвет. Квадратик будет полностью закрашен, если Рудольф решит хотя бы $$$3$$$ задачи в этот день. Такой день назовем 'успешным' (любое промежуточное состояние все равно не устроит Бернарда).

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

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

Первая строка содержит целое число $$$n$$$ ($$$1 \leq n \leq 2\cdot 10^5$$$) — количество задач, решенных Рудольфом.

Вторая строка содержит $$$n$$$ целых чисел $$$t_i$$$ — время в минутах, прошедшее с начала первого дня тренировок Рудольфа до сдачи соответствующей задачи, $$$0 \leq t_i \leq 10^9$$$. Все времена различны и расположены в порядке возрастания.

Напоминаем, что в каждом часе ровно $$$60$$$ минут, а в каждом дне $$$24$$$ часа. Соответственно, считается, что задача сдана в день $$$d$$$, если ее время сдачи соответствует неравенству $$$d \cdot 1440 \leq t_i \lt (d+1) \cdot 1440$$$.

Обратите внимание, что Рудольф может остаться в текущем часовом поясе.

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

Выведите единственное число — максимальное количество подряд идущих успешных дней, которое может получить Рудольф.

Примеры
Входные данные
7
101 202 303 404 505 606 707
Выходные данные
2
Входные данные
3
0 1 1439
Выходные данные
1
Входные данные
3
0 1 1440
Выходные данные
0
Примечание

В первом примере можно переехать $$$18$$$ часовых поясов, увеличив время решения каждой задача на $$$18\cdot 60$$$. При этом первые $$$3$$$ задачи будут сданы в первый день, а последние $$$3$$$ задачи — во второй. Итого, получится $$$2$$$ успешных дня подряд.

Во втором примере Рудольфу не надо никуда переезжать, тогда день будет успешным.

D. Рудольф и выпекание булочек
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Кондитерская «Слойки на вынос» всегда имеет большое количество заказов. Для изготовления слоек используется Автоматическая Машина Выпечки Х (АМВ Х), которая может изготовить одну слойку за $$$t_0$$$ минут.

Со временем машина стала барахлить и теперь может изготовить подряд только $$$b$$$ слоек, после чего должна «отдохнуть» $$$k$$$ минут. После «отдыха» машина может снова испечь до $$$b$$$ слоек, потом ей надо снова «отдохнуть» и т.д.

Чтобы не терять клиентуру из-за невозможности выполнить заказы в срок, хозяйка кондитерской, Ванесса, приобрела $$$n$$$ новых Автоматических Машин Выпечки ХХ (АМВ ХХ), которые могут работать круглосуточно без перерыва. $$$i$$$-я новая машина может изготовлять одну слойку за $$$t_i$$$ минут. Все машины могут работать одновременно.

При наличии одной машины для выпечки Ванесса могла легко подсчитать время, необходимое на выпекание необходимого числа слоек. С новыми машинами расчеты стали труднее, и Ванесса попросила Рудольфа составить для неё программу.

Рудольф последнее время сильно занят и делегирует просьбу Ванессы вам.

Дано $$$s$$$  — количество слоек в заказе. Ванесса и Рудольф хотят знать, за какое минимальное время можно выполнить заказ, используя все или некоторые, имеющиеся в распоряжении, Автоматические Машины Выпечки?

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

Первая строка входных данных содержит три целых неотрицательных числа, характеризующих АМВ Х: $$$t_0$$$, $$$b$$$, $$$k$$$ ($$$1 \le t_0 \le 10^5$$$, $$$1 \le b \le 10^5$$$, $$$1 \le k \le 10^5$$$).

Вторая строка содержит целое неотрицательное число $$$n$$$ ($$$0 \le n \le 10^5$$$) — число новых машин для выпечки, купленных Ванессой.

Третья строка содержит $$$n$$$ целых неотрицательных чисел $$$t_1$$$, $$$t_2$$$, ..., $$$t_n$$$ ($$$1 \le t_i \le 10^5, 1 \le i \le n$$$)  — время, за которое каждая новая машина изготавливает одну слойку. .

Четвертая строка содержит число $$$s$$$ ($$$0 \le s \le 10^9$$$)  — количество слоек в заказе.

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

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

Примеры
Входные данные
5 20 30
2
10 12
10
Выходные данные
30
Входные данные
5 7 23
0
3
Выходные данные
15
Примечание

В первом примере на выпекание $$$10$$$ слоек на имеющихся в распоряжении Ванессы трех Автоматических Машинах Выпечки потребуется не менее $$$30$$$ минут. Машины для выпечки могут быть использованы, например, следующим образом:

  • на АМВ Х за $$$30$$$ минут будет изготовлено $$$6$$$ слоек;
  • на $$$1$$$-й новой АМВ ХХ будет изготовлено $$$3$$$ слойки;
  • на $$$2$$$-й новой АМВ ХХ — $$$1$$$ слойка.
Можно распределить выпекание булочек по машинам и другим образом, но, в любом случае, не получится потратить меньше $$$30$$$ минут.

Во втором примере в распоряжении Ванессы имеется только одна машина для выпечки. На изготовлении трех слоек потребуется $$$5 \times 3 = 15$$$ минут.

E. Рудольф и коктейли
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рудольф решил немного сменить обстановку и пойти поработать барменом. Естественно он беспокоится о своих клиентах и хочет сделать ассортимент коктейлей разнообразным.

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

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

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

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

Далее следуют описания наборов.

Первая строка набора содержит целое число $$$n$$$ ($$$1 \le n \le 10^4$$$) — количество ингредиентов для коктейлей.

Вторая строка набора содержит $$$n$$$ целых чисел $$$a_i$$$ ($$$1 \le i \le n, 0 \le a_i \lt 2^{10}$$$) — вкусности ингредиентов в том порядке, в котором они расположены на полке.

Гарантируется, что сумма $$$n$$$ по всем наборам не превосходит $$$10^4$$$.

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

Для каждого набора выведите единственное целое число — количество коктейлей различных вкусностей, которые может изготовить Рудольф из заданных ингредиентов.

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

В первом тесткейсе мы можем получить $$$7$$$ различных значений вкусностей:

  • $$$0$$$ — взяв ингредиенты со $$$2$$$-го по $$$5$$$-й;
  • $$$1$$$ — взяв ингредиент номер $$$3$$$;
  • $$$2$$$ — взяв ингредиенты с $$$4$$$-го по $$$5$$$-й;
  • $$$3$$$ — взяв ингредиенты с $$$3$$$-го по $$$5$$$-й;
  • $$$8$$$ — взяв ингредиент номер $$$5$$$;
  • $$$10$$$ — взяв ингредиент номер $$$4$$$;
  • $$$11$$$ — взяв ингредиенты с $$$3$$$-го по $$$4$$$-й.

Во втором тесткейсе мы можем получить $$$6$$$ различных значений вкусностей:

  • $$$1$$$ — взяв ингредиент номер $$$1$$$;
  • $$$4$$$ — взяв ингредиент номер $$$2$$$;
  • $$$5$$$ — взяв ингредиенты с $$$1$$$-го по $$$2$$$-й;
  • $$$8$$$ — взяв ингредиент номер $$$3$$$;
  • $$$12$$$ — взяв ингредиенты со $$$2$$$-го по $$$3$$$-й;
  • $$$13$$$ — взяв ингредиенты с $$$1$$$-го по $$$3$$$-й.

F. Рудольф и кроличьи норы
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Иногда Рудольф и Байер выбираются на природу. Особенно Байеру нравится ловить мячики, которые ему кидает Рудольф, или бегать по большому полю с кроличьими норами. У Рудольфа всегда есть с собой несколько мячиков, которые можно кинуть Байеру. Мячики иногда закатываются в кроличьи норы, причём достаточно глубоко. Тогда Байер с радостью залезает в нору и достаёт их оттуда.

На любимом поле Байера есть $$$n$$$ нор (пронумерованных с 1 до $$$n$$$), соединенных между собой туннелями. Некоторые норы имеют выход на поверхность (назовём такие норы входами/выходами), в другие же норы можно попасть только по туннелям. Из каждой норы можно попасть в любую другую нору и только одним путем. Входами/выходами являются норы, из которых ведёт только один туннель.

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

Байер любит исследовать систему туннелей и собирать при этом мячики. Он залезает в одну из нор и бежит по переходам к одному из выходов, выбирая на развилках следующий туннель равновероятно. При этом он никогда не возвращается по тому туннелю, в котором уже был (т.е. не возвращается назад), так как это неинтересно. Все мячики, которые встречаются у него на пути, он собирает и несёт к выходу.

Рудольф знает, сколько мячей лежит в каждой из нор. Ему стало интересно, каково математическое ожидание числа мячиков, собранных Байером, если он начнёт путь от норы с номером $$$s$$$.

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

В первой строке входных данных записаны два целых положительных числа $$$n$$$ и $$$s$$$ ($$$2 \le n \le 10^4$$$, $$$1 \le s \le N$$$) — количество нор и номер норы, с которой начинает свой путь Байер.

Во второй строке содержится $$$n$$$ целых неотрицательных чисел $$$a_1$$$, $$$a_2$$$, $$$\dots$$$, $$$a_n$$$ ($$$0 \le a_i \le 100, 1 \le i \le n$$$), где каждое $$$a_i$$$ равняется числу мячиков, лежащих в норе номер $$$i$$$.

В следующих $$$n - 1$$$ строках описаны туннели, соединяющие норы в формате $$$x_i$$$ $$$y_i$$$ ($$$1 \le x_i, y_i \le n$$$, $$$x_i \neq y_i$$$), где $$$x_i$$$ и $$$y_i$$$ — номера нор, соединенные очередным туннелем. Гарантируется, что можно перейти из каждой норы в любую другую, двигаясь по туннелям.

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

Выведите одно вещественное число — математическое ожидание числа мячиков, собранных Байером, если он начнёт путь от норы с номером $$$s$$$.

Ответ будет считаться правильным, если его абсолютная или относительная ошибка не превосходит $$$10^{-6}$$$.

Формально, пусть ваш ответ равен $$$a$$$, а ответ жюри равен $$$b$$$. Ваш ответ будет зачтен, если и только если $$$\frac{|a - b|}{\max{(1, |b|)}} \le 10^{-6}$$$.

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

Иллюстрация первого примера представлена на рисунке ниже.

Байер начинает свой путь в норе номер $$$4$$$, следует по пути $$$4 \rightarrow 3 \rightarrow 2 \rightarrow 1$$$, по пути забирает два мячика из норы номер $$$2$$$ и выходит на поверхность из норы номер $$$1$$$. Число собранных мячиков — $$$2$$$.

Система нор из второго примера представлена на рисунке:

Байер начинает свой путь в норе номер $$$6$$$ и следует либо к выходу $$$1$$$ по пути $$$6~\rightarrow 5~\rightarrow 2~\rightarrow 1$$$ (собрав при этом $$$2$$$ мячика), либо к выходу $$$2$$$ по пути $$$6 \rightarrow 5 \rightarrow 4 \rightarrow 2$$$, собрав три мячика. Оба пути имеют вероятность $$$0.5$$$, следовательно, математическое ожидание числа собранных мячиков равно $$$2 \cdot 0.5 + 3 \cdot 0.5 = 2.5$$$.

G. Рудольф и шахматы
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Ход в онлайн-шахматах состоит из трёх этапов:

  1. игрок выбирает фигуру, которой будет ходить;
  2. приложение подсвечивает клетки доски, на которые можно поставить фигуру, в том числе — съесть фигуру соперника;
  3. игрок выбирает одну из подсвеченных клеток и делает ход выбранной фигурой в эту клетку.

Рудольф уже выбрал фигуру, и приложение подсветило возможные варианты хода. Однако, мгновением позже из-за ошибки в приложении фигуры на доске перестали отображаться, теперь отображаются только клетки, куда можно сделать ход. Более того, Рудольф забыл, какую фигуру он выбрал. Зная множество подсвеченных клеток, определите, какую фигуру мог выбрать Рудольф. Возможно, в приложении есть и другие ошибки, поэтому множество подсвеченных клеток не соответствует ни одной фигуре (см. пример $$$2$$$).

Необходимо учитывать следующее:

  • фигуры ходят по стандартным шахматным правилам;
  • на доске могут находиться фигуры (как Рудольфа, так и его соперника), которые блокируют ход;
  • для простоты будем считать, что никакой ход Рудольфа не может подставить под атаку его короля;
  • Рудольф не может сделать рокировку;
  • Рудольф помнит, что взятая фигура — не пешка.

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

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

Входные данные содержат $$$8$$$ строк по $$$8$$$ символов в каждой.

Каждый символ — либо точка ('.'), что соответствует неподсвеченной клетке шахматной доски, либо крест ('X'), что соответствует подсвеченной клетке.

Гарантируется, что хотя бы одна клетка подсвечена приложением.

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

В первой строке выведите количество возможных фигур, которые соответствуют множеству подсвеченных клеток. В частности, если такое множество клеток не соответствует ни одной фигуре, выведите $$$0$$$.

Во второй строке выведите список фигур, которые могут быть выбраны игроком. Фигуры можно выводить в любом порядке. Используйте следующие названия фигур:

  • bishop — слон
  • king — король;
  • knight — конь;
  • queen — ферзь;
  • rook — ладья.

Напоминаем, что Рудольф точно не брал пешку, поэтому не стоит выводить такой вариант, даже если он подходит под множество подсвеченных клеток.

Примеры
Входные данные
........
........
........
..X.....
..X.....
........
........
........
Выходные данные
3
king queen rook 
Входные данные
........
........
........
..X.....
..X.....
......X.
........
........
Выходные данные
0
Входные данные
........
........
........
..XX....
..X.....
...X....
........
........
Выходные данные
2
king queen 
Входные данные
........
........
X.......
........
X.......
.X......
........
........
Выходные данные
1
knight 

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

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

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

Таким образом, за один запрос Рудольф может назвать два числа $$$l$$$ и $$$r$$$ ($$$1 \leq l \leq r \leq n$$$), а Бернард покажет, сколько различных символов содержится в позициях от $$$l$$$ до $$$r$$$ загаданной строки. Когда Рудольф посчитает, что знает достаточно информации о загаданной строке, он должен назвать, сколько различных подстрок содержит эта строка.

Помогите Рудольфу правильно посчитать количество различных подстрок не более чем за $$$32768$$$ запросов.

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

Первая строка содержит одно натуральное число $$$n$$$ ($$$1 \leq n \leq 5000$$$) — длину загаданной строки.

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

Можно сделать не более $$$32768$$$ запросов о количестве различных символов на подстроке. Каждый запрос должен иметь вид '? l r', где $$$l$$$ и $$$r$$$ — индексы исходной строки, между которыми (включительно) считается количество различных символов. Должно выполняться условие $$$1 \leq l \leq r \leq n$$$.

На каждый такой запрос будет выведено одно число $$$k$$$ — количество различных символов в подстроке, $$$1 \leq k \leq r-l+1$$$.

Ответ должен быть выведен в формате '! m', где $$$m$$$ — количество различных подстрок загаданной строки. Этот ответ не учитывается в общем количестве запросов, то есть его можно вывести даже после $$$32768$$$ запросов, указанных выше.

Гарантируется, что ответы на запросы непротиворечивы, то есть существует хотя бы одна строка, соответствующая всем ответам. Обратите внимание, что Бернард использует английский алфавит, то есть загаданная строка содержит не более $$$26$$$ различных символов.

Интерактор не является адаптивным, то есть загаданная строка не меняется по мере поступления запросов.

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

4

3

1

2
Выходные данные
? 1 5

? 1 3

? 3 3

? 4 5

! 14
Примечание

В примере Бернард загадал строку 'codec', состоящую из $$$5$$$ символов и содержащую $$$14$$$ различных подстрок.

На первый запрос ответ $$$4$$$, поскольку среди символов строки с номерами от $$$1$$$ до $$$5$$$ только $$$4$$$ различных.

I. Рудольф и утерянный массив
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Однажды вечером Рудольф шел по улице и нашел массив длины $$$n$$$, состоящий из $$$0$$$ и $$$1$$$. Придя домой, Рудольф стал развлекаться с массивом, записывая сумму элементов на различных отрезках массива.

На следующий день, пока Рудольф был на работе, Байер нашел этот массив. Как любой уважающий себя пёсик он его съел. Придя домой, Рудольф понял в чем дело и сильно расстроился. Но позже вспомнил, что у него осталось $$$m$$$ записей про отрезки массива вида $$$l, r, s$$$, где $$$l$$$ и $$$r$$$ — границы отрезка, а $$$s$$$ — сумма элементов на нем. Поскольку Рудольф был уставший прошлым вечером, отрезки, на которых он считал сумму, были длиной не более 10.

Рудольф попросил вас помочь ему восстановить любой подходящий массив. Гарантируется, что ответ существует.

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

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

Далее следуют описания наборов.

Первая строка набора содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n, m \le 10^4$$$) — размер массива и количество записей, соответственно.

Следующие $$$m$$$ строк содержат по три целых числа $$$l_i, r_i, s_i$$$ ($$$1 \le l_i \le r_i \le n, 0 \le s_i \le r_i - l_i + 1, r_i - l_i \lt 10$$$) — границы $$$i$$$-го отрезка, включительно и сумма элементов на нем.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$10^4$$$. Гарантируется, что сумма $$$m$$$ по всем наборам входных данных не превосходит $$$10^4$$$.

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

Для каждого набора входных данных выведите в отдельной строке $$$n$$$ чисел ($$$0$$$ или $$$1$$$) через пробел — подходящий массив. Если существует несколько решений, выведите любое.

Пример
Входные данные
3
5 2
1 4 3
2 5 3
3 1
1 3 2
21 10
1 8 4
5 9 1
4 13 5
13 18 4
16 17 1
18 20 0
18 21 1
4 8 2
13 15 3
8 17 7
Выходные данные
0 1 1 1 0 
0 1 1 
0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 
Примечание

Во втором примере также подойдут массивы $$$[1, 0, 1]$$$ и $$$[1, 1, 0]$$$.

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

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

Опечаленный, он шёл, рассматривая столбы из еловых брёвен, которые стояли вдоль дороги. Всего Рудольф насчитал $$$n$$$ столбов, которые имели высоты $$$h_1, h_2, \ldots h_n$$$ и стояли в точках с координатами $$$x_1, x_2, \ldots x_n$$$.

Он вспомнил, что жители Рамени рассказали ему, как построить портал в Рамень. Для этого нужно выбрать высокую ель, подрубить её и толкнуть так, чтобы она опиралась на вершину стоящей рядом ели. Тогда образуется арка в форме прямоугольного треугольника (см. рис. для лучшего понимания условия). Рудольф подумал, что елей поблизости нет, но для портала сойдут и столбы (так гласит городская легенда жителей Рамени).

Рудольф может выбрать $$$a$$$-й и $$$b$$$-й столбы и толкнуть $$$a$$$-й в сторону $$$b$$$-го. Если $$$a$$$-й столб упадёт на вершину $$$b$$$-го (другие столбы не являются помехой — ведь Рудольф может заранее срубить их в сторону), то $$$b$$$-й столб, дорога и нижняя часть $$$a$$$-го столба образуют портал в форме прямоугольного треугольника. Помогите Рудольфу выбрать столбы так, чтобы максимизировать площадь портала и привезти из Рамени как можно больше мороженого.

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

Первая строка содержит целое число $$$n$$$ $$$(2 \le n \le 10^5)$$$ — количество столбов.

Далее следует $$$n$$$ строк — описания столбов.

Строка описания содержит координату $$$x_i$$$ $$$(- 10^9 \le x_i \le 10^9)$$$ и высоту $$$h_i$$$ $$$(1 \le h_i \le 10^9)$$$ $$$i$$$-го столба. Гарантируется, что координаты всех столбов различны.

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

Выведите два целых числа от $$$1$$$ до $$$n$$$, разделённые пробелом — сначала номер столба, который должен упасть, и затем номер столба, на вершину которого должен упасть столб.

Если существует несколько оптимальных ответов, то выведите любой из них.

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

Примеры
Входные данные
4
0 2
1 4
3 3
5 2
Выходные данные
2 3
Входные данные
5
2 4
8 1
11 5
9 9
4 5
Выходные данные
4 1
Входные данные
2
0 3
3 3
Выходные данные
-1 -1
Примечание

Примеры правильно построенных порталов:

Неправильно построенные порталы: