Разбиения числа \(n\) на слагаемые — это набор целых положительных чисел, сумма которых равна \(n\). При этом разбиения, отличающиеся лишь порядком слагаемых, считаются одинаковыми, поэтому можно считать, что слагаемые в разбиении упорядочены по неубыванию.
Например, существует 7 разбиений числа 5 на слагаемые:
5 = 1 + 1 + 1 + 1 + 1 5 = 1 + 1 + 1 + 2 5 = 1 + 1 + 3 5 = 1 + 2 + 2 5 = 1 + 4 5 = 2 + 3 5 = 5 |
В приведенном примере разбиения упорядочены лексикографически — сначала по первому слагаемому в разбиении, затем по второму, и так далее. В этой задаче вам потребуется по заданному разбиению на слагаемые найти следующее в лексикографическом порядке разбиение.
Входной файл содержит одну строку — разбиение числа \(n\) на слагаемые (\(1 \le n \le 100 000\)). Слагаемые в разбиении следуют в неубывающем порядке.
Выведите в выходной файл одну строку — разбиение числа \(n\) на слагаемые, следующее в лексикографическом порядке после приведенного во входном файле. Если во входном файле приведено последнее разбиение числа \(n\) на слагаемые, выведите «No solution».
5=1+1+3
5=1+2+2
5=5
No solution
Олег — известный поклонник соревнований по программированию. Он знает всех участников всех соревнований за последние десять лет и может про любого участника сказать, сколько задач решила команда с его участием на любом соревновании. И еще Олег очень любит теорию чисел.
В таблице результатов соревнования по программированию команды упорядочены по убыванию количества решенных задач. Олег называет таблицу результатов красивой, если для всех команд количество решенных ими задач равно нулю или является делителем количества задач на соревновании. Когда какая-нибудь команда сдает задачу, количество сданных задач у нее увеличивается на один. Никакая команда не может сдать две или более задач одновременно, также две команды не могут одновременно сдать задачу.
Глядя на красивую таблицу результатов, Олег заинтересовался: а сколько еще задач смогут суммарно сдать команды так, чтобы после каждой сданной задачи таблица результатов оставалась красивой? Помогите ему выяснить это.
Первая строка входного файла содержит два целых числа: \(n\) и \(m\) — количество команд и количество задач на соревновании, соответственно (\(1 \le n \le 100\), \(1 \le m \le 10^9\)). Вторая строка содержит n целых чисел, упорядоченных по невозрастанию: для каждой команды задано, сколько задач она решила. Гарантируется, что все отличные от нуля числа являются делителями числа \(m\).
Выведите в выходной файл одно число: максимальное количество задач, которое суммарно могут еще сдать команды так, чтобы после каждой сданной задачи таблица результатов оставалась красивой.
Комментарий к примеру тестов.
В приведенном примере команды на 4 и 5 месте могут сдать по одной задаче, команда на 6 месте три, а команда на 7 месте — 4. Суммарно таким образом команды смогут сдать 9 задач
7 12 12 6 4 3 3 1 0
9