HILO (Платина)#11230

HILO (Платина)

2 секунди
256 мегабайтів
Дуже складна

Бесі знає число x + 0.5, де — це деяке ціле число від до , включно.

Ельза намагається вгадати це число. Вона може ставити питання виду "чи більше чи менше?" для деякого від до включно. Бесі відповідає "HI!", якщо більше ніж x + 0.5, і "LO!", якщо менше ніж x + 0.5.

Ельза дотримується наступної стратегії. Вона створила список з чисел, де кожне число від до зустрічається рівно один раз (іншими словами, цей список є перестановкою розміру ). Потім вона йде по цьому списку, називаючи числа для вгадування з нього по порядку. Однак вона пропускає всі непотрібні запити. Тобто, якщо Ельза повинна спитати число , а раніше вона питала число j < i таке, що Бесі відповіла "HI!", Ельза не питає , а переходить до наступного числа в списку. Аналогічно, якщо вона раніше питала про число j > i, на яке Бесі відповіла "LO!", Ельза також пропускає це число і переходить до наступного в списку. Можна довести, що використовуючи цю стратегію, Ельза завжди унікально визначить незалежно від перестановки, яку вона створить.

Якщо ми об'єднаємо всі відповіді Бесі "HI" або "LO" в один рядок , кількість разів, коли Бесі відповість "HILO", є кількістю підрядків довжини в рядку , які дорівнюють "HILO".

Бесі знає, що Ельза використовує цю стратегію і навіть вже вибрала число , однак вона не знає, яку перестановку використовує Ельза. Ваше завдання — обчислити суму кількостей разів, які Бесі скаже "HILO" для всіх перестановок, які Ельза може використовувати — по модулю 10^9 + 7.

Вхідні дані

Один рядок містить (1 \le n \le 5000) і .

Вихідні дані

Загальна кількість підрядків HILO по модулю 10^9 + 7.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

Приклад 1

У цьому тесті число Бесі .

Наприклад, якщо перестановка Ельзи (4, 1, 3, 2), тоді Бесі скаже "HILOHILO", - два рази "HILO". Якщо перестановка Ельзи (3, 1, 2, 4), тоді Бесі скаже "HILOLO", "HILO" - один раз.

Приклад 2

Не забудьте вивести суму по модулю 10^9 + 7.