eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

HILO (Платина)

HILO (Платина)

Беси знает число x + 0.5, где x некоторое целое число между 0 и n, включительно.

Эльза старается угадать это число. Она может задавать вопросы вида i больше или меньше?" для некоторого i от 1 до n включительно. Беси отвечает "HI!" если i больше чем x + 0.5, и "LO!", если i меньше чем x + 0.5.

Эльза работает в соответствии со следующей стратегией. Она создала список из n чисел, где каждое число от 1 до n встречается ровно один раз (другими словами, этот список является перестановкой размера n). Затем она идёт по этому списку называя числа для угадывания из него по порядку. Однако она пропускает все бесполезные запросы. Так если Эльза должна спросить число i а ранее она спрашивала число j < i такое, что Беси ответила "HI!", Эльза не спрашивает i, а переходит к следующему числу в списке. Аналогично, если она ранее спрашивала про число j > i, на которое Беси ответила "LO!", Эльза также пропускает это число i и переходит к следующему в списке. Можно доказать, что используя эту стратегию, Эльзая всегда уникально определит x вне зависимости от перестановки, которую она создаст.

Если мы сконкатенируем все ответы Беси "HI" или "LO" в одну строку s, количество раз которое Беси ответит "HILO" есть количество подстрок длины 4 в строке s, которые равны "HILO".

Беси знает, что Эльза использует эту стратегию и даже уже выбрала число x, однако она не знает, какую перестановку использует Эльза. Ваша задача - вычислить сумму количеств раз, которые Беси скажет "HILO" для всех перестановок, которые Эльза может использовать - по модулю 109 + 7.

Входные данные

Одна строка содержит n (1n5000) и x.

Выходные данные

Общее количество подстрок HILO по модулю 109 + 7.

Пример 1

В этом тесте число Беси 2.5.

Например, если перестановка Эльзы (4, 1, 3, 2), тогда Беси скажет "HILOHILO", - два раза "HILO". Если перестановка Эльзы (3, 1, 2, 4), тогда Bessie скажет "HILOLO", "HILO" - один раз.

Пример 2

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

Лимит времени 2 секунды
Лимит использования памяти 256 MiB
Входные данные #1
4 2
Выходные данные #1
17
Входные данные #2
60 10
Выходные данные #2
508859913
Источник 2021 USACO Декабрь, Платина