Плотник Иван Семенович Бобров делает на заказ любую мебель. Но в городе он славится тем, что изготавливает из дерева на заказ прописные буквы латинского алфавита. Из таких букв очень модно делать вывески для магазинов, кафе, торговых центров.
В целом Иван Семенович любит изготавливать буквы, но не все буквы делать одинаково приятно. Дело в том, что есть буквы, в которых нужно выдалбливать отверстия, а это нужно делать очень аккуратно, чтобы изделие не треснуло. Например, в буквах «C» и «E» нет отверстий, у букв «A» и «D» есть одно отверстие, а у буквы «B» — два отверстия.
Сегодня Иван Семенович получил очередной заказ на изготовление прописной буквы латинского алфавита. Ему интересно, сколько отверстий придется делать для изготовления этой буквы?
В единственной строке дана единственная заглавная буква латинского алфавита.
В единственной строке выведите единственное целое число — количество отверстий, которое придется сделать для изготовления этой буквы.
A
1
B
2
C
0
Список всех строчных букв латинского алфавита выглядит следующим образом:
A, B, C, D, E, F, G, H, I, J, K, L, M,
N, O, P, Q, R, S, T, U, V, W, X, Y, Z.
Игорь хочет научиться варить самый вкусный в мире кофе, как настоящий бариста. Сейчас он изучает процесс приготовления капучино. Основными ингредиентами капучино являются эспрессо и молоко. Игорь считает, что у него получилось сделать правильное капучино, если отношение молока к эспрессо лежит в пределах от $$$3:1$$$ до $$$5:1$$$ включительно. Например, если в напитке 45 миллилитров молока и 10 миллилитров эспрессо, то Игорь считает, что у него получилось капучино, потому что выполнено условие $$$3 : 1 \le 45 : 10 \le 5 : 1$$$.
Если отношение молока к эспрессо строго меньше $$$3:1$$$, то Игорь считает, что у него получилось макиато. Например, если в напитке 29 миллилитров молока и 10 миллилитров эспрессо, то Игорь считает, что у него получилось макиато, потому что выполнено условие $$$29 : 10 \lt 3 : 1$$$.
Если же отношение молока к эспрессо строго больше $$$5:1$$$, то Игорь считает, что у него получилось латте. Например, если в напитке 53 миллилитров молока и 10 миллилитров эспрессо, то Игорь считает, что у него получилось латте, потому что выполнено условие $$$5 : 1 \lt 53 : 10$$$.
Сегодня утром Игорь приготовил себе напиток, в котором содержится $$$a$$$ миллилитров молока и $$$b$$$ миллилитров эспрессо. Определите, какой напиток получился у Игоря.
В единственной строке через пробел даны два целых числа $$$a$$$ и $$$b$$$ ($$$1 \le a, b \le 10^5$$$) — количество молока и количество эспрессо в напитке Игоря.
В единственной строке выведите название напитка, который получился у Игоря, исходя из критериев данных в условии.
Если у Игоря получилось макиато, выведите слово «macchiato», без кавычек.
Если у Игоря получилось капучино, выведите слово «cappuccino», без кавычек.
Если у Игоря получилось латте, выведите слово «latte», без кавычек.
29 10
macchiato
45 10
cappuccino
53 10
latte
Тестовые примеры соответствуют всем возможным напиткам и разобраны в условии задачи.
Алина учится на отлично, участвует в олимпиадах, занимается спортом. К сожалению, это никак не спасает её от $$$\textit{«Дочь, помой посуду, пожалуйста!»}$$$
Вчера у мамы Алины был день рождения, на котором гости подарили набор из $$$n$$$ тарелок. Каждая тарелка имеет свой уникальный красивый рисунок и отличается от остальных. Для простоты будем считать, что тарелки занумерованы числами $$$1, 2, \ldots, n$$$.
Сегодня утром Алина увидела, что после вчерашней встречи никто не помыл посуду, поэтому $$$n$$$ грязных подаренных тарелок разложены в $$$k$$$ стопок на кухне. Известно, что сегодня к маме снова придут гости, а Алине придётся помогать их обслуживать. В течение дня у мамы будет $$$q$$$ просьб двух видов:
На эту просьбу Алине надо будет поставить на праздничный стол тарелку c номером $$$i$$$. В этот момент тарелка $$$i$$$ должна быть $$$\textbf{чистой}$$$.
На эту просьбу Алине надо будет убрать со стола тарелку с номером $$$i$$$ в одну из $$$k$$$ стопок. Cчитаем, что в этот момент тарелка $$$i$$$ была использована и стала $$$\textbf{грязной}$$$. Тарелку можно убрать только $$$\textbf{наверх}$$$ стопки.
Понятно, что для того, чтобы выполнить просьбу типа $$$1$$$, тарелку $$$i$$$ необходимо в какой-то момент $$$\textbf{помыть}$$$. Опишем процесс мытья посуды подробнее:
Алина очень хочет как можно больше времени посвятить саморазвитию. Она просит помочь $$$\textbf{минимизировать количество помытых в процессе тарелок}$$$. Каждый случай мытья тарелки учитывается в ответе отдельно.
Напишите программу, которая по заданным просьбам мамы подскажет Алине оптимальный алгоритм действий.
В первой строке записаны 3 целых числа $$$n$$$, $$$k$$$, $$$q$$$ ($$$1 \le n, k, q \le 10^5$$$) — количество тарелок, количество стопок с посудой, количество просьб мамы соответственно.
В следующих $$$k$$$ строках идёт описание стопок. В строке $$$r + 1$$$ описывается стопка с номером $$$r$$$. Первое число в строке $$$s_r$$$ — количество тарелок в стопке $$$r$$$. Далее идут $$$s_r$$$ чисел — номера тарелок, лежащих в стопке (в порядке снизу вверх, то есть последнее число — номер тарелки, лежащей сверху стопки).
Гарантируется, что:
Гарантируется, что просьбы мамы $$$\textbf{не противоречивы}$$$, то есть не бывает такого, что мама просит поставить на стол тарелку, которая уже там стоит или убрать со стола тарелку, которой на нём нет.
В первой строке выведите $$$a$$$ — минимальное количество помытых в процессе тарелок. Каждый случай мытья тарелки учитывается в ответе отдельно.
В следующих $$$a + q$$$ строках выведите действия Алины. Каждое действие в следующем формате:
В последовательности действий должно быть ровно $$$a$$$ действий 3-го типа.
Если существует несколько оптимальных последовательностей действий Алины — выведите любую из них.
3 3 4 1 2 2 1 3 0 1 1 1 3 2 1 1 2
3 3 2 3 2 1 1 2 3 3 1 1
Опишем действия в примере:
(Неоптимально убирать тарелку в стопку номер $$$1$$$ — в дальнейшем нам понадобится тарелка номер $$$2$$$ из той стопки, но тарелка номер $$$1$$$ «перекроет» к ней доступ).
Демиург Слава создал одномерный мир из $$$n$$$ королевств на прямой, причем $$$i$$$-е королевство находится на позиции $$$i$$$ в мире.
Все люди верят в Славу, но воспринимают его по-разному, поэтому религии различных королевств могут различаться. В дальнейшем каждой уникальной религии будет соответствовать уникальное неотрицательное целое число. На момент создания мира восприятие людьми Славы было одинаковым, поэтому все $$$n$$$ королевств имели религию $$$0$$$.
Королевства могут объединяться в союзы. Слава не хочет, чтобы у королевств в союзе возникали разногласия, поэтому у всех в союзе должно быть одинаковое вероисповедание.
С другой стороны, если королевства так близки друг другу по духу, то что им мешает объединиться в одно королевство? Славе не хотелось бы такого, так как достаточно сильное королевство может начать войны с королевствами других религий.
В то же время, если расстояние между союзниками будет слишком большим, то становится сложно поддерживать контакт.
Осознав всё это, Слава решил ввести следующие правила относительно союзов:
Рассмотрим пример: пусть $$$n = 6$$$, $$$k = 2$$$ и вероисповедания королевств равны $$$\{1, 2, 1, 3, 1, 3\}$$$. В таком случае возможны только следующие союзы:
Обратите внимание, что союз $$$\{1, 5\}$$$ невозможен, так как расстояние между королевствами равно $$$4$$$, что не равно $$$k = 2$$$.
Иногда королевства переосмысливают свои ценности или восприятие мира и меняют религию. Это может приводить к изменению ситуации с возможными союзами.
К примеру, если в описанном выше примере королевство $$$6$$$ изменит свою веру с $$$3$$$ на $$$2$$$, то пропадёт возможность союза $$$\{4, 6 \}$$$, так как теперь у этих королевств будут различные религии.
Если же после этого королевство $$$4$$$ тоже изменит религию на $$$2$$$, то станут возможными сразу три союза:
Слава — очень занятой демиург, поэтому просит вас — ангела-стажёра — помочь ему и после каждого изменения каким-либо королевством своей религии сообщать, сколько различных союзов возможно в данный момент в описанном мире.
В первой строке записано три числа $$$n$$$, $$$k$$$ и $$$q$$$ ($$$1 \leq k \leq n \leq 2 \cdot 10^5$$$, $$$1 \leq q \leq 10^5$$$) — количество королевств, разрешенное для союза расстояние и количество изменений вероисповедания.
Далее в $$$q$$$ строках вводятся по два числа $$$m_i$$$, $$$r_i$$$ ($$$1 \leq m_i \leq n$$$, $$$0 \leq r_i \leq 10^9$$$) — номер королевства и его новое вероисповедание. Возможны ситуации, когда новое вероисповедание совпадает со старым (это уже вопросы политики, не рассматриваемые в рамках данной задачи).
Начальная религия для каждого из $$$n$$$ королевств равна $$$0$$$.
Выведите $$$q$$$ целых чисел $$$a_i$$$ — количество возможных союзов в мире Славы после принятия королевством $$$m_i$$$ религии $$$r_i$$$.
6 2 8 1 1 3 1 2 2 6 3 5 1 4 3 6 2 4 2
4 4 2 1 3 4 3 6
Тестовый пример соответствует описанному в условии примеру — первые $$$6$$$ запросов каждое королевство изменяет свою религию с $$$0$$$, после чего происходят $$$2$$$ описанных в примере изменения.
Рассмотрим вероисповедания королевств и возможные союзы после каждого изменения религии:
Организаторы олимпиады «Технологичные Когнитивы» обещали стикеры тем, кто позовет друзей участвовать в соревновании. Каждый участник при регистрации мог указать ФИО друга, который уговорил его принять участие в олимпиаде (а мог и не указать никого).
Если двое или более друзей, указавших вас как «пригласившего», зарегистрировались строго позже вас и решили хотя бы одну задачу, вы получаете заветные стикеры.
Пока жюри подводит итоги самой олимпиады, вопрос $$$\it{\text{«Ну что там по стикерам?»}}$$$ звучит из каждого утюга, поэтому помогите жюри и найдите список всех участников, получивших набор стикеров.
В первой строке вводится число $$$N$$$ $$$(1 \le N \le 3 \cdot 10^5)$$$ — число участников. Для удобства участники пронумерованы целыми числами от 1 до N.
Во второй строке записаны $$$N$$$ чисел $$$T_i$$$ $$$(1 \le T_i \le 10^9)$$$ — время регистрации $$$i$$$-го участника.
В третьей строке записаны $$$N$$$ чисел $$$P_i$$$ $$$(0 \le P_i \le 12)$$$ — количество задач, решенных участником $$$i$$$.
В четвертой строке записаны $$$N$$$ чисел $$$F_i$$$ $$$(0 \le F_i \le N)$$$ — номер друга, которого $$$i$$$-й участник отметил как «пригласившего». Если $$$F_i = 0$$$, то $$$i$$$-й участник никого не указал в таком статусе.
В первой строке выведите одно целое число $$$K$$$ $$$(0 \le K \le N)$$$ — количество участников, которые должны получить стикеры.
Во второй строке через пробел выведите $$$K$$$ целых чисел $$$S_i$$$ $$$(1 \le S_1 \le S_2 \le \ldots \le S_K \le N)$$$ — номера получивших стикеров участников в возрастающем порядке.
Если $$$K = 0$$$, то на второй строке не надо выводить ничего.
9 2 3 1 4 5 9 8 7 6 12 11 10 9 8 7 6 5 4 1 1 1 2 2 9 9 9 9
2 2 9
5 1 2 10 11 5 6 7 0 9 10 5 5 5 5 0
0
Рассмотрим детально первый тестовый пример.
Итого, первому участнику «засчитали» одного друга, второму — двух, девятому — трёх. Все засчитанные участники решили хотя бы одну задачу, поэтому дают право участникам $$$2$$$ и $$$9$$$ получить стикеры.
Рассмотрим второй тестовый пример.
Федот решил пройти уровень в своей любимой игре «Прыгай вперед!». Уровень представляет из себя $$$n$$$ последовательных клеток, которые пронумерованы числами от $$$1$$$ до $$$n$$$. За посещение клетки с номером $$$i$$$ необходимо заплатить $$$a_i$$$ тугриков. У каждой клетки есть выталкивающая сила, которая изначально равна одному (это означает, что из клетки с номером $$$i$$$ можно прыгнуть только в клетку с номером $$$i + 1$$$). Цель состоит в том, чтобы пройти из клетки номер $$$1$$$ в клетку номер $$$n$$$, потратив как можно меньше тугриков.
Понятно, что в таких условиях уровень можно пройти единственным образом — последовательно посетить все клетки от первой до последней. А стоимость такого прохождения будет равна сумме стоимостей посещения всех клеток уровня. Но все не так просто, ведь в игре есть $$$n - 1$$$ дополнительных карточек, пронумерованных числами от $$$1$$$ до $$$n - 1$$$. На карточке номер $$$i$$$ записано число $$$b_i$$$ ($$$1 \le b_i \le n - i$$$), которое означает, что если применить $$$i$$$-ю карточку, то выталкивающая сила клетки с номером $$$i$$$ станет равна $$$b_i$$$ и после этого из клетки с номером $$$i$$$ можно будет прыгнуть только в клетку с номером $$$i + b_i$$$. Примененная один раз карточка действует $$$\textbf{на все последующие прохождения}$$$ уровня.
Федот решил применить $$$q$$$ ($$$1 \le q \le n - 1$$$) карточек. Он будет применять их в определенном порядке и после каждого такого действия заново вычислять минимальное количество тугриков, которое нужно потратить, чтобы пройти из клетки номер $$$1$$$ в клетку номер $$$n$$$. Можно доказать, что как бы мы не применяли карточки, всегда найдется путь из клетки номер $$$1$$$ в клетку номер $$$n$$$.
И тут Федот понял, что после применения очередной карточки пересчитать минимальную стоимость прохождения не так и просто. Поэтому эту задачу он поручил вам.
В первой строке входных данных дано целое число $$$n$$$ ($$$2 \le n \le 10^5$$$) — количество клеток.
Во второй строке через пробел даны $$$n$$$ целых чисел $$$a_i$$$ ($$$1 \le a_1, \ldots, a_n \le 10^9$$$) — стоимости посещения клеток.
В третьей строке через пробел даны $$$n - 1$$$ целых чисел $$$b_i$$$ ($$$1 \le b_i \le n - i$$$) — числа, записанные на карточках.
В четвертой строке дано целое число $$$1 \le q \le n - 1$$$ — количество карточек, которые применит Федот.
В пятой строке через пробел даны $$$q$$$ уникальных целых чисел $$$c_i$$$ ($$$1 \le c_1, \ldots, c_q \le n - 1$$$; $$$c_i \neq c_j$$$ для $$$1 \le i \neq j \le q$$$) — номера карточек, которые последовательно применит Федот.
Требуется вывести $$$q$$$ строк. В $$$k$$$-й строке ($$$1 \le k \le q$$$) должна быть выведена минимальная стоимость прохождения уровня после применения карточек с номерами $$$c_1, \ldots, c_k$$$.
4 1 10 100 1000 2 2 1 3 2 1 3
1011 1101 1101
Рассмотрим детально тестовый пример:
Алиса пишет компьютерную игру «Полив». В игре на клумбе растёт $$$n$$$ цветков в ряд, каждый из которых может быть полит или не полит. Таким образом, клумбу можно представить в виде массива $$$F$$$ из нулей и единиц длины $$$n$$$, где $$$F_i = 1$$$ означает, что цветок $$$i$$$ не полит, а $$$F_i = 0$$$ означает, что цветок $$$i$$$ полит.
За одну операцию игрок может выбрать позицию $$$i$$$ такую, что $$$F_i = 1$$$ и полить цветок $$$i$$$ (то есть $$$F_i$$$ станет равно $$$0$$$).
Пока Алиса писала код игры, она часто отвлекалась на общение со своим любимым преподавателем по программированию. Поэтому для неё большой неожиданностью стало то, что в какой-то момент времени (она не поняла, в какой именно) полив цветка стал «странным». Теперь, если полить цветок $$$i$$$, то несколько политых цветков слева и справа от цветка $$$i$$$ станут не политыми.
Более формально эту «странность» можно описать так: когда игрок выбирает позицию $$$i$$$ для которой $$$F_i = 1$$$, в программе Алисы выбираются какие-нибудь границы $$$l$$$ и $$$r$$$ ($$$1 \le l \le i \le r \le n$$$) при которых для любого $$$j \in [l, r]$$$ выполняется $$$F_j = 1 \Leftrightarrow j = i$$$ (то есть на отрезке $$$[l, r]$$$ все цветы политы, кроме цветка на позиции $$$i$$$). И после полива цветка $$$i$$$ этот цветок станет политым, а все остальные цветы на отрезке $$$[l, r]$$$ станут не политыми.
«Ой» — вскрикнула Алиса, как только заметила «странность». Конечно же, вместо того, чтобы исправить «странность», Алиса начала случайно выбирать цветы, поливать их и смотреть, как изменяется клумба. Спустя какое-то время Алиса заскучала, она остановилась на клумбе в состоянии $$$A$$$. Теперь ей стало интересно, можно ли из данного состояния получить состояние $$$B$$$. И если да, то как это может произойти.
В первой строке записано одно целое число $$$n$$$ ($$$1 \le n \le 100$$$) — количество цветов на клумбе.
Во второй строке записано состояние клумбы, которое есть на данный момент у Алисы — строка $$$A$$$ длины $$$n$$$, состоящая из нулей и единиц.
В третьей строке записано состояние клумбы, которое хочет получить Алиса — строка $$$B$$$ длины $$$n$$$, состоящая из нулей и единиц.
Если из состояния $$$A$$$ невозможно получить состояние $$$B$$$ за не более чем $$$4 \cdot n + 1$$$ полив, то в единственной строке выведите «NO» (без кавычек).
Если из состояния $$$A$$$ можно получить состояние $$$B$$$, то в первой строке выведите «YES» (без кавычек).
Во второй строке выведите $$$M$$$ ($$$M \le 4 \cdot n + 1$$$) — необходимое количество поливов, чтобы из состояния $$$A$$$ получить состояние $$$B$$$.
Обратите внимание, что минимизировать количество поливов $$$\textbf{не требуется}$$$.
В каждой из следующих $$$M$$$ строк выведите по 3 числа: $$$i \ l \ r$$$:
Если существует несколько возможных последовательностей поливов, преобразующих $$$A$$$ в $$$B$$$, то выведите любую из них.
10 1001010010 1110111110
YES 3 4 2 5 9 9 10 10 7 10
Рассмотрим, как будет меняться строка после каждой операции в примере:
Это интерактивная задача.
В центре города Глубокоозёрный находится круглое и глубокое озеро. Вокруг озера проложена кольцевая дорога, которая представляет из себя окружность. Вдоль дороги расположены $$$n$$$ домов таким образом, что расстояние между соседними домами составляет ровно один километр. Все дома пронумерованы последовательно числами от $$$1$$$ до $$$n$$$, то есть дома $$$i$$$ и $$$i + 1$$$ являются соседними при $$$1 \le i \lt n$$$, а также дома $$$n$$$ и $$$1$$$ являются соседними. В одном из домов располагается единственная в городе школа, а еще в одном из домов живет мальчик Пахом. Каждый будний день Пахом ходит из дома в школу вдоль дороги по кратчайшему пути (если такой путь не единственный, то Пахом выбирает любой из кратчайших путей), пусть длина этого пути равна $$$len$$$ километров. Можно заметить, что всего есть два возможных пути из дома Пахома в школу, так как улица только одна и представляет из себя окружность.
Иногда в городе меняют асфальт на дороге и в таком случае дорогу перекрывают на участке между двумя соседними домами. Причем перекрытым может быть только один участок, чтобы из любого дома можно было дойти до любого другого дома по дороге. Участки дороги пронумерованы таким образом, что участок между домами $$$i$$$ и $$$i + 1$$$ имеет номер $$$i$$$ ($$$1 \le i \lt n$$$), а участок между домами $$$n$$$ и $$$1$$$ имеет номер $$$n$$$.
Можно заметить, что если один участок дороги перекрыт, то остается единственный путь из дома Пахома в школу, вне зависимости от того какой именно участок перекрыт. В таком случае Пахом идет этим единственным путем. Этот путь может оказаться длиннее чем $$$len$$$ километров, поэтому Пахом не очень любит, когда в его городе меняют асфальт.
Ваша задача состоит в том, чтобы определить длину $$$len$$$. Для этого вы можете сделать не более трех запросов первого типа:
$$$?$$$ $$$i$$$ ($$$1 \le i \le n$$$) — узнать длину пути от дома Пахома до школы в случае, если перекрыт участок дороги номер $$$i$$$.
После этого следует вывести запрос второго типа, который сообщает ответ на задачу:
$$$!$$$ $$$len$$$
После этого запроса необходимо завершить программу.
Первая строка входных данных содержит целое число $$$n$$$ ($$$3 \le n \le 10^5$$$) — количество домов в городе.
Чтобы вывести ответ на задачу, выведите его в формате $$$!$$$ $$$len$$$, где $$$len$$$ — длина кратчайшего пути из дома Пахома в школу при условии, что ни один из участков дороги не перекрыт.
Чтобы задать запрос первого типа, выведите $$$?$$$ $$$i$$$ ($$$1 \le i \le n$$$), где $$$i$$$ — номер участка дороги, который вы хотите перекрыть. После вывода запроса необходимо $$$\textbf{вывести перевод строки}$$$ и сделать операцию $$$\textbf{«flush»}$$$.
После каждого запроса типа $$$?$$$ считайте одно целое число $$$val$$$ — длину пути из дома Пахома в школу при условии, что перекрыт участок дороги с номером $$$i$$$.
Обратите внимание, что вы можете сделать не более 3 запросов типа $$$?$$$.
Чтобы сообщить, что ответ найден, требуется вывести $$$!$$$ $$$len$$$, где $$$len$$$ — длина кратчайшего пути из дома Пахома в школу при условии, что ни один из участков дороги не перекрыт. После этого требуется сделать «flush» и завершить программу.
Запрос на вывод ответа не входит в ограничение на 3 запроса.
Для сброса буфера вывода (то есть для операции «flush») сразу после вывода нужно сделать:
Другие варианты: cout.flush(), cout « flush.
Если вы используете не System.out, то используйте команду flush вашего потока вывода.
Напрямую можно сделать «flush» с помощью sys.stdout.flush() (требует import sys).
3 2 1 1
? 1 ? 2 ? 3 ! 1
В тестовом примере показано, как программа взаимодействует с проверяющей системой.
Сначала программа считывает значение $$$n$$$, которое равно трем.
Далее программа задает запрос первого типа $$$?$$$ $$$1$$$ (перекрыли участок дороги $$$1$$$ между домами $$$1$$$ и $$$2$$$), а затем считывает число $$$2$$$ — ответ на этот запрос.
Далее программа задает запрос первого типа $$$?$$$ $$$2$$$ (перекрыли участок дороги $$$2$$$ между домами $$$2$$$ и $$$3$$$), а затем считывает число $$$1$$$ — ответ на этот запрос.
Далее программа задает запрос первого типа $$$?$$$ $$$3$$$ (перекрыли участок дороги $$$3$$$ между домами $$$3$$$ и $$$1$$$), а затем считывает число $$$1$$$ — ответ на этот запрос.
И в конце программа выводит ответ на задачу в виде $$$!$$$ $$$1$$$ и завершает свою работу.
Почему ответ в данном случае равен $$$1$$$? Давайте посмотрим, что мы узнали из запросов. Если перекрыть участок дороги $$$1$$$, то путь будет иметь длину $$$2$$$, а если перекрыть участок дороги $$$2$$$ или $$$3$$$, то путь будет иметь длину $$$1$$$. Из этого можно сделать вывод, что путь из дома Пахома в школу состоит из участка $$$1$$$ и имеет длину $$$1$$$.
Жил-был Вовочка. Однажды дома он нашел спички и от нечего делать решил построить из них Башню, очень особенную. Правда так и не придумал, что именно особенного будет в его Башне.
На следующий день случилось чудо. Папа мальчика работал на Балабановской спичечной фабрике и решил взять его с собой на работу. В кабинете, где он сидел, было полно спичек разных длин. В углу Вовочка заметил книжку с надписью «ГОСТ». Книжка была толстая, нашлись в ней и требования к башне из спичек:
Маленький мальчик сразу понял, что его Башня будет самой высокой! Правда тут же у Вовочки возник вопрос — а какую максимальную высоту может иметь построенная им Башня? Мальчик еще не знает, что такое «произведение», поэтому просит вас помочь ему в этом деле.
Помогите Вовочке вычислить максимальную высоту Башни, которая может быть построена из имеющихся у мальчика спичек.
В первой строке вводится одно число $$$N$$$ $$$(1 \leq N \leq 200000)$$$ — количество спичек. Во второй строке записаны $$$N$$$ целых чисел $$$A_i$$$ $$$(1 \leq A_i \leq 200000)$$$ через пробел — длина $$$i$$$-й спички.
Выведите через пробел $$$3$$$ целых числа — количество этажей, высоту одного этажа и его ширину. Если существует несколько башен с максимальной высотой, выведите любую. Если ни одну башню составить не получается, выведите $$$3$$$ раза через пробел $$$-1$$$.
4 5 5 5 5
1 5 5
7 4 4 8 4 8 4 8
1 8 4
5 1 2 3 4 3
-1 -1 -1
10 5 5 5 5 5 5 7 7 7 5
2 5 7
7 1 1 2 3 3 3 3
1 3 1
Пояснения к тестам из условия.