Хмарочос#11818

Хмарочос

1 секунда
128 мегабайтів
Дуже складна

Міжнародна олімпіада з інформатики відбудеться в місті Цукуба, Японія. У рамках підготовки до IOI ми плануємо побудувати хмарочоси на головній вулиці Цукуби. Оскільки ми хочемо створити нову визначну пам'ятку, будівлі повинні задовольняти наступним умовам.

Ми плануємо побудувати будівель вздовж прямої лінії на головній вулиці. Їх висоти задані числами a_1, a_2, a_3, ..., a_n. Усі висоти різні. Оскільки порядок розташування будівель ще не визначений, ми можемо переставляти їх у будь-якому порядку. Будівлі будуть оздоблені до IOI. Проте через обмеження на використовувані матеріали, сума модулів різниць висот двох сусідніх будівель не повинна перевищувати . Іншими словами, якщо висоти будівель з одного боку вулиці позначити як f_1, f_2, f_3, ..., f_n, то повинна виконуватись нерівність:

|f_1 - f_2| + |f_2 - f_3| + ... + |f_{n-1} - f_n| \le L

Тут означає модуль числа .

Скільки існує таких перестановок будівель, які задовольняють зазначену умову?

За заданою кількістю будівель , їх висотами та обмеженням на суму модулів різниць висот сусідніх будівель, напишіть програму, яка обчислює кількість допустимих перестановок будівель. Оскільки відповідь може бути дуже великою, виведіть залишок від ділення цієї кількості на .

Вхідні дані

Прочитайте наступні дані зі стандартного вводу.

  • Перша строка містить два цілих числа та (1 \le n \le 100, 1 \le L \le 1000) — кількість будівель та верхнє обмеження на суму модулів різниць висот сусідніх будівель.

  • Друга строка містить цілих чисел a_1, a_2, a_3, ..., a_n (1 \le a_i \le 1000 (1 \le i \le n), a_i \ne a_j (1 \le i < j \le n)) — висоти будівель.

Вихідні дані

Виведіть одне число — залишок від ділення кількості допустимих перестановок будівель на .

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

Підзадача 1 [5 балів]: n \le 8.

Підзадача 2 [15 балів]: n \le 14, L \le 100.

Підзадача 3 [80 балів]: Немає додаткових обмежень.