В академії фізичної культури розробили новий метод інтервальних тренувань спортсменів. Відповідно до цього методу спортсмен повинен тренуватися щодня, проте зростання навантаження повинно постійно змінюватися його зменшенням і навпаки. План тренування являє собою набір цілих додатних чисел ~a_1, a_2,. . . , a_m~, де ~a_i~ описує навантаження спортсмена в ~i~-й день. Будь-які два сусідніх дні повинні мати різне навантаження: ~a_i \neq a_{i + 1}~. Щоб зростання навантаження і його зменшення чергувалися, для ~i~ від 1 до ~m - 2~ має виконуватися така умова: якщо ~a_i < a_{i + 1}~, то ~a_{i + 1} > a_{i + 2}~, якщо ж ~a_i > a_{i + 1}~, то ~a_{i + 1} < a_{i + 2}~.
Сумарне навантаження в процесі виконання плану повинне складати ~n~, тобто ~a_1 + a_2 +. . . + A_m = n~. Обмеження на кількість днів у плані немає, ~m~ може бути будь-яким, але навантаження в перший день тренувань зафіксоване: ~a_1 = k~. Перш ніж приступити до тестування нового методу, керівництво академії хоче з'ясувати, скільки різних планів тренувань задовольняє описаним обмеженням.
Потрібно написати програму, яка за заданими ~n~ і ~k~ визначає, скільки різних планів тренувань задовольняють описаним обмеженням, і виводить залишок від ділення кількості таких планів на числа ~10^9 + 7~.
Формат вхідних даних
У першому рядку вхідних даних знаходяться цілі числа ~n~, ~k~ (~1 \le n \le 5000~, ~1 \le k \le n~).
Формат вихідних даних
Виведіть одне число: залишок від ділення кількості планів тренувань на ~10^9 + 7~.
Примітка
У першому прикладі підходять наступні плани: [2, 1, 2, 1], [2, 1, 3], [2, 3, 1], [2, 4].
У другому прикладі єдиний план [3].
Scoring
Підзадача 1: 23 бали, ~1 \le n \le 10~;
Підзадача 1: 20 балів, ~1 \le n \le 30~,
Підзадача 1: 23 бали, ~1 \le n \le 500~,
Підзадача 1: 34 бали, ~1 \le n \le 5000~,
Приклад вхідних даних
6 2
Приклад вихідних даних
4
Приклад вхідних даних
3 3
Приклад вихідних даних
1
Коментарі