В академії фізичної культури розробили новий метод інтервальних тренувань спортсменів. Відповідно до цього методу спортсмен повинен тренуватися щодня, проте зростання навантаження повинно постійно змінюватися його зменшенням і навпаки. План тренування являє собою набір цілих додатних чисел \(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
Коментарі