Innopolis Open 2025-2026. Заключительный тур
A. Забывчивый Шустрик и пульт
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Хомяк Шустрик получил в подарок от ёжика Шуршика необычный калькулятор. Изначально на экране калькулятора отображается число $$$A$$$.

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

Калькулятор умеет выполнять только четыре операции, за один шаг можно применить одну из следующих операций:

  • Операция «+»: заменить текущее значение $$$A$$$ на $$$A + M$$$.
  • Операция «-»: заменить текущее значение $$$A$$$ на $$$A - M$$$.
  • Операция «*»: заменить текущее значение $$$A$$$ на $$$A \cdot M$$$.
  • Операция «%»: заменить текущее значение $$$A$$$ на остаток от деления $$$A$$$ на $$$M$$$. После этой операции выполняется условие $$$0 \le A \lt M$$$.

После выполнения некоторой (возможно, нулевой) последовательности операций получится число $$$A'$$$.

Ёжику Шуршику стало интересно, сможет ли Шустрик получить такое число $$$A'$$$, что

$$$$$$ A' \equiv B \pmod N. $$$$$$

Иначе говоря, числа $$$A'$$$ и $$$B$$$ должны иметь одинаковые остатки при делении на $$$N$$$.

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

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

В единственной строке входных данных дано четыре целых числа через пробел: $$$A$$$, $$$M$$$, $$$B$$$ и $$$N$$$ ($$$|A| \leq 10^9$$$, $$$1 \leq M \leq 10^9$$$, $$$0 \leq B \lt N \leq 2 \cdot 10^6$$$).

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

Если искомой последовательности операций не существует, в единственной строке выведите «-1».

Иначе, в первой строке выведите длину $$$x$$$ минимальной подходящей последовательности. Во второй строке выведите строку длины $$$x$$$ из символов «+», «-», «*» и «%» — последовательность операций, приводящий изначальное $$$A$$$ в такое $$$A'$$$, что $$$A' \equiv B \pmod N$$$.

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

Можно доказать, что длина ответа не превышает $$$N$$$.

Система оценки

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

ГруппаБаллыДоп. ограничения Необходимые группы
17$$$|A|, M, N \le 8$$$–
26$$$M = 1$$$–
38$$$M = N$$$–
412$$$M \equiv 0 \pmod N$$$3
515$$$N \equiv 0 \pmod M$$$2–3
616$$$N \cdot M \le 2 \cdot 10^{6}$$$1–2
718$$$A = 0$$$–
818–1–7
Примеры
Входные данные
1 3 2 5
Выходные данные
2
+*
Входные данные
6 7 2 4
Выходные данные
0

Входные данные
-1 3 2 4
Выходные данные
1
+
Входные данные
5 6 1 6
Выходные данные
-1
Входные данные
0 6 3 7
Выходные данные
3
---
Входные данные
5 9 1 8
Выходные данные
3
*%+
Примечание

Рассмотрим ответ на первый пример входных данных:

  • Изначально $$$A = 1$$$.
  • Операция «+»: заменить $$$A$$$ на $$$A + 3 = 1 + 3 = 4$$$.
  • Операция «*»: заменить $$$A$$$ на $$$A \cdot 3 = 4 \cdot 3 = 12$$$.
  • Получилось $$$A' = 12$$$. При этом $$$A' \equiv B \pmod N$$$ верно, так как $$$12 \equiv 2 \pmod 5$$$.
Можно доказать, что в данном примере не существует последовательности из нуля или одной операции, получающей подходящее $$$A'$$$. Последовательность из двух операций «++» тоже является подходящей: $$$1+3+3 = 7 \equiv 2 \pmod 5$$$.

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

На линии монорельса находятся $$$n$$$ станций, пронумерованных по порядку от $$$1$$$ до $$$n$$$.

У каждой станции $$$i$$$ есть название $$$s_i$$$ — строка из не более 20 латинских букв. Каждая буква написана на отдельной табличке.

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

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

Формально за одну операцию вы можете выбрать два индекса $$$1 \le i, j \le n$$$, а также любую букву из строки $$$s_i$$$, и перенести эту букву в любое место строки $$$s_j$$$. Такая операция занимает $$$1 + |i - j|$$$ ценнейших единиц времени.

Например, если $$$s_i = \texttt{ab}$$$ и $$$s_j = \texttt{cd}$$$, то за одну операцию переноса буквы из $$$i$$$ в $$$j$$$ можно сделать:

  • $$$s_i = \texttt{a}$$$; $$$s_j = \texttt{bcd}$$$ или $$$s_j = \texttt{cbd}$$$ или $$$s_j = \texttt{cdb}$$$.
  • $$$s_i = \texttt{b}$$$; $$$s_j = \texttt{acd}$$$ или $$$s_j = \texttt{cad}$$$ или $$$s_j = \texttt{cda}$$$.

Обратите внимание, что в операции также разрешено выбирать $$$i = j$$$.

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

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

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

Вторая строка теста содержит $$$n$$$ строк: $$$s_1, s_2, \ldots, s_n$$$ ($$$1 \le |s_i| \le 20$$$) — изначальные названия станций.

Третья строка теста содержит $$$n$$$ строк: $$$t_1, t_2, \ldots, t_n$$$ ($$$1 \le |t_i| \le 20$$$) — желаемые новые названия станций.

Гарантируется что все строки в тесте состоят из маленьких латинских букв, символы от 'a' до 'z'.

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

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

Система оценки
ГруппаБаллыДоп. ограничения Необходимые группы
114$$$n = 1$$$–
217$$$\operatorname{sorted}(s_i) = \operatorname{sorted}(t_i) $$$–
325$$$s_i$$$ и $$$t_i$$$ не имеют общих букв–
413$$$n \leq 1000; |s_i|, |t_i| \leq 10$$$–
511$$$|s_i| = 1$$$, $$$|t_i| = 1$$$–
611Все строки состоят из буквы a–
79–1–6

Здесь, $$$\operatorname{sorted}(s_i)$$$ обозначает отсортированную в алфавитном порядке строку $$$s_i$$$. Например, $$$\operatorname{sorted}(\texttt{abacaba}) = \texttt{aaaabbc}$$$.

Примеры
Входные данные
3
no iislop nepon
inno polis open
Выходные данные
10
Входные данные
3
eleven plus two
twelve plus one
Выходные данные
12
Входные данные
1
evil
live
Выходные данные
3
Входные данные
2
a b
ba ab
Выходные данные
-1
Входные данные
2
indian cat
init canada
Выходные данные
-1
Входные данные
4
aaaa aaa aa a
a aa aaa aaaa
Выходные данные
14
Входные данные
7
s e a s i d e
d i s e a s e
Выходные данные
22

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

Персик — акула в мире программирования — решил составить расписание для всех профилей олимпиады Innopolis Open.

В учебном году $$$D$$$ дней, пронумерованных от $$$1$$$ до $$$D$$$. Всего проводится $$$n$$$ олимпиад.

Олимпиады пронумерованы от $$$1$$$ до $$$n$$$ в порядке неубывания запланированной даты проведения. Каждая олимпиада проводится ровно в один день. Для каждой олимпиады известны её запланированная дата проведения и польза для подрастающего поколения.

Вы можете изменить дату проведения каждой олимпиады, но только на более поздний день того же учебного года (то есть новую дату нельзя сделать меньше исходной и нельзя сделать больше $$$D$$$).

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

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

Польза сезона равна сумме пользы всех $$$D$$$ дней.

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

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

В первой строке даны три целых числа $$$n$$$, $$$D$$$ и $$$t$$$ — количество олимпиад и количество дней в учебном году, а также тип ответа ($$$1 \le n \le 3 \cdot 10^5$$$; $$$1 \le D \le 2 \cdot 10^9$$$; $$$1 \le t \le 2$$$).

В $$$i$$$-й из следующих $$$n$$$ строк даны два целых числа $$$d_i$$$ и $$$b_i$$$ — запланированная дата (номер дня) проведения и польза $$$i$$$-й олимпиады ($$$1 \le d_i \le D$$$; $$$1 \le b_i \le 2 \cdot 10^9$$$).

Гарантируется, что $$$d_i \le d_j$$$ для всех $$$i$$$ и $$$j$$$, таких что $$$i \lt j$$$.

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

Если $$$t = 1$$$, то выведите одно целое число — наибольшую возможную пользу олимпиадного сезона.

Если $$$t = 2$$$, то в первой строке выведите одно целое число — наибольшую возможную пользу олимпиадного сезона; а во второй строке выведите расписание олимпиад — $$$n$$$ целых чисел, $$$i$$$-е из которых является итоговой датой $$$i$$$-й олимпиады. При указанных итоговых датах должна достигаться максимально возможная польза олимпиадного сезона.

Система оценки

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

ГруппаБаллыДоп. ограничения Необходимые группы
110$$$n, D \le 20$$$; $$$b_i \le 20$$$ для всех $$$i$$$; $$$t = 1$$$–
27$$$n, D \le 20$$$; $$$b_i \le 20$$$ для всех $$$i$$$1
311$$$n, D \le 100$$$; $$$b_i \le 100$$$ для всех $$$i$$$1, 2
49$$$n, D \le 800$$$; $$$b_i \le 800$$$ для всех $$$i$$$1, 2, 3
55$$$n, D \le 2500$$$; $$$b_i \le 2500$$$ для всех $$$i$$$; $$$t = 1$$$1
64$$$n, D \le 2500$$$; $$$b_i \le 2500$$$ для всех $$$i$$$1–5
75$$$b_i = b_j$$$ для всех $$$i$$$, $$$j$$$–
85$$$d_i \neq d_j$$$ для всех $$$i$$$ и $$$j$$$, таких что $$$i \neq j$$$–
95$$$d_i = 1$$$ для всех $$$i$$$; $$$t = 1$$$–
105$$$d_i = d_j$$$ для всех $$$i$$$, $$$j$$$9
118$$$D \le 2 \cdot 10^6$$$1–6
1210$$$t = 1$$$1, 5, 9
1316–1–12
Примеры
Входные данные
3 10 1
1 3
1 5
1 2
Выходные данные
10
Входные данные
3 10 2
1 3
1 5
1 2
Выходные данные
10
1 2 3
Входные данные
5 6 2
1 7
2 6
5 8
5 9
6 4
Выходные данные
30
1 3 5 6 6
Примечание

Заметьте, что ответ для второго теста не подойдёт в качестве ответа для первого, так как при $$$t = 1$$$ нужно выводить только одно число.

Во втором примере в предлагаемом ответе польза первого дня равна $$$3$$$, польза второго — $$$5$$$, третьего — $$$2$$$, а пользы дней с $$$4$$$-го по $$$10$$$-й равны $$$0$$$. Таким образом, польза олимпиадного сезона равна $$$3+5+2+0+\ldots+0=10$$$. Заметьте, что расписание олимпиад $$$[2, 1, 3]$$$ невозможно, так как олимпиады должны остаться в порядке неубывания даты проведения.

В третьем примере также подходит расписание олимпиад $$$[1, 2, 5, 6, 6]$$$, но не подходит $$$[1, 2, 3, 5, 6]$$$, так как третья олимпиада не может проходить раньше $$$5$$$-го дня.

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

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

Кибер-акула Зубастик$$$^{\dagger}$$$ работает на складе и складывает коробки в одну вертикальную башню. Высота башни не ограничена, но акула может снимать с башни и класть на неё только верхнюю коробку. Также рядом есть буфер — свободная площадка, на которой можно временно держать коробки (в буфере может лежать любое количество коробок).

Коробки нумеруются в порядке прибытия, начиная с $$$1$$$. Для каждой коробки известен момент времени $$$t_j$$$, когда её нужно извлечь со склада.

В процессе работы происходят события двух типов:

  • + t — пришла новая коробка, которую нужно извлечь в момент времени $$$t$$$ $$$(1 \le t \le T)$$$. Все значения $$$t$$$ различны.
  • - j — наступил момент времени $$$t_j$$$, и требуется извлечь коробку с номером $$$j$$$.

Действия. Во время обработки события акула может выполнять следующие операции:

  • 1 j — положить коробку $$$j$$$ на вершину башни (разрешено только если коробка $$$j$$$ лежит в буфере).
  • 2 j — положить коробку $$$j$$$ в буфер (разрешено только если коробка $$$j$$$ лежит на вершине башни).

Правила обработки событий.

  • При событии + t новая коробка сразу помещается в буфер. К концу обработки этого события буфер должен быть пустым.
  • При событии - j к концу обработки этого события в буфере должна остаться ровно одна коробка — коробка $$$j$$$. После этого коробка $$$j$$$ считается извлечённой и удаляется из системы.

Ваша задача — для каждого события вывести набор операций, который корректно обработает это событие.

$$$^{\dagger}$$$ см. рис.

Кибер-акула Зубастик
Входные данные

В первой строке вводится $$$T$$$ — число моментов времени для рассмотрения.

В $$$i$$$-й из последующих $$$T$$$ строк вводится описание очередного события, происходящего в момент времени $$$i$$$, в следующем формате:

  • + t — пришла новая коробка, которая должна быть убрана в момент времени $$$t$$$ $$$(1 \le t \le T)$$$. (Коробки нумеруются в порядке прибытия). После обработки этого события буфер должен быть пустым.
  • - j — для коробки $$$j$$$ наступило время её достать. После обработки этого события в буфере должна остаться коробка $$$j$$$.
Выходные данные

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

Сначала целое число $$$K$$$ — число операций.

Затем список из $$$K$$$ операций — для каждой два числа:

  • Тип операции (1 или 2).
  • Затем номер коробки, с которой операция производится.

Суммарное число выведенных операций по всем событиям не должно превосходить $$$10^6$$$. Если это ограничение нарушено, решение получит вердикт Wrong Answer.

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

Сначала ваша программа должна считать целое число $$$T$$$ — количество событий.

Затем для каждого $$$i = 1,2,\dots,T$$$ интерактор выводит строку с описанием события, происходящего в момент времени $$$i$$$:

  • + t — пришла новая коробка, которую нужно извлечь в момент времени $$$t$$$ $$$(1 \le t \le T)$$$. Коробка получает следующий по порядку номер. К концу обработки события буфер должен быть пустым.
  • - j — требуется извлечь коробку $$$j$$$. К концу обработки события в буфере должна остаться ровно одна коробка $$$j$$$.

После получения очередного события ваша программа должна вывести ответ для него в следующем формате:

  • в первой строке целое число $$$K$$$ — количество операций для обработки текущего события;
  • далее $$$K$$$ строк, в каждой две целых величины: тип операции ($$$1$$$ или $$$2$$$) и номер коробки $$$j$$$.

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

После вывода ответа обязательно сбросьте буфер вывода:

  • fflush(stdout) или cout.flush() в C++;
  • System.out.flush() в Java;
  • flush(output) в Pascal;
  • stdout.flush() в Python.

Обратите внимание, что для более быстрой работы вывода стоит вызывать flush (или endl) после вывода всех $$$K$$$ операций, а не после каждой операции.

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

Система оценки

В этой задаче тесты двух видов.

Тест первого вида — генерируется массив [1, 1, 2, 2, ..., N, N] и случайным образом перемешивается, получается массив $$$[a_1, a_2, \dots, a_T]$$$ размера $$$T$$$, $$$T = 2N$$$. Тогда очередная коробка добавляется в момент времени $$$t_1$$$ и достаётся в момент времени $$$t_2$$$, если $$$t_1 \lt t_2$$$ и $$$a[t_1] = a[t_2]$$$.

Тест второго вида — гарантируется, что коробки достаются в том же порядке, в котором добавляются.

Для каждого значения $$$N$$$ (числа коробок) сгенерировано по одному тесту каждого вида.

ГруппаТестыЗначения $$$N$$$БаллыНакопленная суммаЗависимости
11-2Тесты из условия0 за тест0-
23-10100, 200, 330, 4201 за тест8-
311-18480, 720, 820, 10801 за тест161
419-261240, 1420, 1630, 18701 за тест241-2
527-302150, 24701 за тест281-3
531-342840, 32602 за тест361-3
635-423740, 4300, 4940, 56802 за тест521-4
743-506530, 7500, 8620, 99102 за тест681-5
851-5811390, 13090, 15050, 173002 за тест841-6
959-6617500, 18000, 18500, 190002 за тест1001-7
Примеры
Входные данные
4
+ 3
+ 4
- 1
- 2
Выходные данные
1
1 1
3
2 1
1 2
1 1
1
2 1
1
2 2
Входные данные
8
+ 8
+ 3
- 2
+ 7
+ 6
- 4
- 3
- 1
Выходные данные
1
1 1
1
1 2
1
2 2
1
1 3
1
1 4
1
2 4
1
2 3
1
2 1

E. Чэн Ши и коллекции бамбуковых надписей
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Коллекция Чэн Ши — это динамическое мультимножество строк. Изначально оно пусто.

Панда может выполнять операции двух типов:

  • + s — добавить строку $$$s$$$ в мультимножество.
  • - s — удалить одну копию строки $$$s$$$ из мультимножества.

Слону Филимону стало интересно какое наименьшее количество действий потребуется после каждой операции, чтобы все строки в текущем мультимножестве стали одинаковыми.

Разрешённые действия над одной строкой из коллекции:

  1. Удаление последнего символа строки — Чэн Ши аккуратно откусывает кусочек бамбука.
  2. Добавление любого символа в конец строки — панда сажает бамбук, и он вырастает, добавляя один символ в конец.
С каждой строкой (бамбуком) можно произвести неограниченное количество действий.

Строка, к которой приводятся все остальные, может быть любой (в том числе пустой) и не обязана присутствовать в мультимножестве.

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

Помогите Чэн Ши быстро отвечать на вопрос Филимона после каждого изменения.

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

В первой строке записано одно целое число $$$q$$$ ($$$1 \le q \le 5 \cdot 10^5$$$) — количество операций.

Каждая из следующих $$$q$$$ строк описывает одну операцию и имеет вид:

+ s или - s

где $$$s$$$ — непустая строка, состоящая из строчных латинских букв.

  • Операция + s означает добавление строки $$$s$$$ в мультимножество.
  • Операция - s означает удаление одной копии строки $$$s$$$ из мультимножества. Гарантируется, что строка $$$s$$$ присутствует в мультимножестве в момент удаления.

Во всех запросах $$$1 \le |s| \le 5 \cdot 10^5$$$. Суммарная длина всех строк во всех операциях не превышает $$$5 \cdot 10^5$$$.

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

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

Если после операции мультимножество пусто, выведите $$$0$$$.

Система оценки
Доп. ограничения
ГруппаБаллы$$$q$$$$$$\sum |s_i|$$$Тип операций Необходимые подгруппы
110$$$q \le 100$$$$$$\sum |s_i| \le 1000$$$+ и -–
210$$$q \le 1000$$$$$$\sum |s_i| \le 10^4$$$+ и -1
315$$$q \le 50\,000$$$$$$\sum |s_i| \le 10^5$$$+ и -1, 2
410$$$q \le 5 \cdot 10^5$$$$$$\sum |s_i| \le 5 \cdot 10^5$$$, $$$|s_i| \le 10$$$+–
510$$$q \le 5 \cdot 10^5$$$$$$\sum |s_i| \le 5 \cdot 10^5$$$, $$$|s_i| \le 10$$$+ и -4
620$$$q \le 5 \cdot 10^5$$$$$$\sum |s_i| \le 5 \cdot 10^5$$$+4
725––+ и -1–6
Пример
Входные данные
5
+ abc
+ ab
+ a
- ab
+ b
Выходные данные
0
1
2
2
4

F. Нимсапёр!
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Александр и Бабин живут на заброшенном острове. Из развлечений у них есть только деревья, камни и бомбы (не спрашивайте откуда). Им очень скучно, и они хотят сыграть в игру. Александр предложил сыграть в «Сапёр», а Бабин — в «Ним». В качестве компромисса они решили сыграть в Нимсапёр!

Не имея выбора, в качестве игрового поля, ребята выбрали дерево. Напомним, что деревом называется связный неориентированный граф без циклов.

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

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

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

Игрок, который не может сделать ход в «Ним», проигрывает.

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

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

Напомним, что в игре «Ним» первый игрок выигрывает тогда и только тогда, когда побитовый XOR размеров кучек отличен от нуля.

Напомним, что XOR или Исключающим ИЛИ называется бинарная операция, которая так применяется к каждой паре битов, стоящих на одинаковых позициях в двоичных представлениях чисел, что в результате на этой позиции стоит 0, если биты равны, а иначе — 1. Например, 3 XOR 5 = 6, так как $$$3_{10}$$$ = $$$011_2$$$, $$$5_{10}$$$ = $$$101_2$$$ и потому после применения операции второй и третий бит становятся равными 1, а первый бит — 0, таким образом получается $$$110_2$$$ = $$$6_{10}$$$

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

В первой строке входных данных содержится одно целое число $$$n$$$ ($$$2 \leq n \leq 369$$$) — количество вершин в дереве.

В последующих $$$n - 1$$$ строках содержатся пары целых чисел $$$a_i, b_i$$$ ($$$1 \le a_i, b_i \le n$$$) — рёбра дерева. Гарантируется, что эти рёбра действительно образуют дерево.

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

В единственной строке выведите одно число — максимальное количество бомб, которое можно заложить.

Система оценки
ГруппаБаллыДоп. ограничения Необходимые группы
18$$$n \le 8$$$–
211$$$n \le 18$$$1
320$$$n \le 45$$$1–2
419$$$n \leq 128$$$1–3
518$$$n \leq 243$$$1–4
620Степени всех вершин $$$\le 3$$$–
74–1–6
Примеры
Входные данные
3
1 2
1 3
Выходные данные
2
Входные данные
9
1 2
2 3
3 4
4 5
5 6
6 7
5 8
8 9
Выходные данные
5
Входные данные
13
7 6
7 5
7 4
7 3
7 2
7 1
1 12
2 11
3 10
4 9
5 8
6 13
Выходные данные
8