Кольорові карти
Обмеження: 2 сек., 256 МіБ
Приїхавши на півфінал світу з програмування, Зеник вирішив, що час зіграти в настільну гру з такими правилами:
Зеник загадує число n;
його колеги мають карти k кольорів, для кожного кольору є по одній карті зі значеннями 1, 2, 4, ..., 2i, ...;
вони повинні взяти набір карт так, аби сума їх значень була рівна n.
Зенику стало цікаво, скільки ж є різних способів вибрати набір. Два набори вважаються різними, якщо в одному наборі є карта, якої немає в іншому.
Допоможіть Зенику і порахуйте кількість наборів карт, у яких сума значень рівна n. Оскільки відповідь може бути великою, виведіть її за модулем простого числа 109+7.
Вхідні дані
У єдиному рядку задано два цілих числа n та k — число, яке загадав Зеник, та кількість кольорів відповідно.
Вихідні дані
У єдиному рядку виведіть ціле число — кількість наборів, якими можна отримати число n, за модулем 109+7.
Обмеження
1≤k,n≤106,
для 7 тестів виконується обмеження: k=1,
для 7 тестів виконується обмеження: 1<k,n≤103.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
3 2 | 4 |
Примітки
У першому тесті є чотири набори:
перша карта кольору 1 зі значенням 1, друга — кольору 1 зі значенням 2;
перша карта кольору 1 зі значенням 1, друга — кольору 2 зі значенням 2;
перша карта кольору 2 зі значенням 1, друга — кольору 1 зі значенням 2;
перша карта кольору 2 зі значенням 1, друга — кольору 2 зі значенням 2.