14012: HILO(Platinum) - USACO21DecPlatinum
Бесі знає число \(x+0.5\), де \(x\) деяке ціле число між \(0\) і \(N\), включно (\(1\le N\le 5000\)).
Ельза намагається вгадати це число. Вона може ставити питання виду \(i\) більше чи менше?" для деякого \(i\) від \(1\) до \(N\) включно. Бесі відповідає "HI!" якщо \(i\) більше, ніж \(x+0.5\), і "LO!", якщо \(i\) менше, ніж \(x+0.5\).
Ельза працює відповідно до наступної стратегії. Вона створила список з \(N\) чисел, де кожне число від \(1\) до \(N\) зустрічається рівно один раз (іншими словами, цей перелік є перестановкою розміру \(N\).). Потім вона йде за цим списком, називаючи числа для вгадування з нього по порядку. Однак вона пропускає всі непотрібні запити. Так якщо Ельза повинна спитати число \(i\) а раніше вона запитувала число \(j < i\) таке, що Бесі відповіла "HI!", Ельза не питає \(i\), а переходить до наступного числа в списку. Аналогічно, якщо вона раніше запитувала про число \(j & gt; i\), на яке Бесі відповіла "LO!", Ельза також пропускає це число \(i\) і переходить до наступного в списку. Можна довести, що, використовуючи цю стратегію, Ельза завжди унікально визначить. \(x\) незалежно від перестановки, яку вона створить.
Якщо ми сконкатенуємо всі відповіді Бесі "HI" або "LO" в один рядок \(S\), кількість разів яке Бесі відповість "HILO" є кількість підрядків довжини \(4\) у рядку \(S\), які дорівнюють "HILO".
Бесі знає, що Ельза використовує цю стратегію і навіть уже обрала число \(x\), проте вона знає, яку перестановку використовує Эльза. Ваше завдання – обчислити суму кількості разів, які Бесі скаже "HILO" для всіх перестановок, які Ельза може використовувати - за модулем \(10^9+7\).
Формат вхідних даних
Єдиний рядок введення містить \(N\) та \(x\).
Формат вихідних даних
Загальна кількість підрядків HILO за модулем \(10^9+7\).
Приклад вхідних даних-1
4 2
Приклад вихідних даних-1
17
Пояснення до прикладу-1
У цьому тесті число Бесі \(2.5\).
Наприклад, якщо перестановка Ельзи \((4,1,3,2)\), тоді Бесі скаже "HILOHILO" - двічі "HILO". Якщо перестановка Ельзи \((3,1,2,4)\), тоді Bessie скаже "HILOLO" - "HILO" - один раз.
Приклад вхідних даних-2
60 10
Приклад вихідних даних-2
508859913
Пояснення до прикладу-2
Не забудьте вивести суму за модулем \(10^9+7\).
Оцінювання
- У тестах 3-10 \(N\le 50\).
- У тестах 11-18 \(N\le 500\).
- У тестах 19-26 немає додаткових обмежень. </ul>
Коментарі