Первый, кто решил
В известном конкурсе по программированию Forcedeltas участвуют участников, предлагается задач, и он длится минут.
Для каждого участника и каждой задачи задано целое число . Если , это значит, что участник не может решить задачу . В противном случае, участник может решить задачу за минут.
Все участники следуют одной и той же стратегии. Каждый участник составляет список задач, которые он может решить, перемешивает его случайным образом и решает задачи в этом порядке, пока не закончатся задачи или время конкурса.
Например, если после перемешивания список задач участника выглядит как , то он решает задачу за минут, задачу за минут и так далее. Задачи не могут быть решены позже -й минуты.
Участник получает награду Первый решивший за задачу , если никто другой не решает задачу раньше. Несколько участников могут получить награду за одну и ту же задачу.
Вам нужно найти ожидаемое количество наград, которые получит каждый участник, по модулю .
Входные данные
Первая строка содержит три целых числа , и — количество участников, количество задач и продолжительность конкурса в минутах (; ; ).
Следующие строк содержат по целых чисел (). Число обозначает время, необходимое участнику для решения задачи , или , если он не может её решить.
Выходные данные
Выведите целых чисел — ожидаемое количество наград для участников , по модулю .
Формально, пусть . Ожидаемое количество наград выражается как несократимая дробь , где и — целые числа и . Выведите целое число, равное . То есть, выведите такое , что и .
Примеры
Примечание
В примере участник всегда получает награду за задачу , участник — за задачу , ожидаемое количество наград для участника равно , участник не получает наград, а для участника — .