Однажды хакер Дмитрий открыл для себя интересную игру — Акинатор. Правила игры очень просты: игрок загадывает какого-нибудь известного человека, а Акинатор пытается угадать этого человека за ограниченное количество вопросов. Каждый ход Акинатор спрашивает игрока: «Этот человек — i1 или i2 или ... или im?» (здесь m — это количество человек, про которых был задан вопрос, оно может меняться от вопроса к вопросу). Игрок может ответить «Да» или «Нет», а Акинатор будет использовать полученную информацию. Как только Акинатор гарантированно угадал задуманного человека, он говорит ответ и выигрывает. Если же Акинатор не может уложиться в заданное число вопросов, он проигрывает.
Акинатор должен угадать задуманного человека за k вопросов. Заранее известно, что Дмитрий задумал одного из n человек: 1, 2, ..., n с вероятностями p1, p2, ..., pn. Определите, сможет ли Акинатор гарантированно угадать человека за k вопросов, и если да, какое минимальное среднее число вопросов ему для этого понадобится.
Первая строка содержит два целых числа n и k (1 ≤ k ≤ n ≤ 100) — количество человек, которые могли быть загаданы и количество вопросов.
Вторая строка содержит n целых чисел a1, a2, ... an (1 ≤ ai ≤ 1012). Вероятности pi прямо пропорциональны ai, т. е. могут быть вычислены как
.
Если Акинатор не сможет гарантированно угадать задуманного человека, выведите «No solution».
Иначе выведите несократимую рациональную дробь — минимально возможное среднее число вопросов, которое понадобится Акинатору, чтобы победить.
4 1 8 1 9 2
No solution
4 2 1 2 3 4
2/1
4 3 1 2 3 4
19/10
В третьем примере Акинатор может задать 3 вопроса. Оптимальным будет задать первый вопрос про четвертого человека. Если будет получен ответ «Нет», то следует спросить про третьего человека. Если же и в этом случае будет получен ответ «Нет», то последним вопросом нужно сделать выбор между первым и вторым человеком.
Среднее количество вопросов в этом случае равно 0.4·1 + 0.3·2 + 0.2·3 + 0.1·3 = 1.9.
| Название |
|---|


