Кольорові карти
Limits: 2 sec., 256 MiB
Приїхавши на півфінал світу з програмування, Зеник вирішив, що час зіграти в настільну гру з такими правилами:
Зеник загадує число nn;
його колеги мають карти kk кольорів, для кожного кольору є по одній карті зі значеннями 1, 2, 4, ..., 2i2i, ...;
вони повинні взяти набір карт так, аби сума їх значень була рівна nn.
Зенику стало цікаво, скільки ж є різних способів вибрати набір. Два набори вважаються різними, якщо в одному наборі є карта, якої немає в іншому.
Допоможіть Зенику і порахуйте кількість наборів карт, у яких сума значень рівна nn. Оскільки відповідь може бути великою, виведіть її за модулем простого числа 109+7109+7.
Input
У єдиному рядку задано два цілих числа nn та kk — число, яке загадав Зеник, та кількість кольорів відповідно.
Output
У єдиному рядку виведіть ціле число — кількість наборів, якими можна отримати число nn, за модулем 109+7109+7.
Constraints
1≤k,n≤1061≤k,n≤106,
для 7 тестів виконується обмеження: k=1k=1,
для 7 тестів виконується обмеження: 1<k,n≤1031<k,n≤103.
Samples
Input (stdin) | Output (stdout) |
---|---|
3 2 | 4 |
Notes
У першому тесті є чотири набори:
перша карта кольору 1 зі значенням 1, друга — кольору 1 зі значенням 2;
перша карта кольору 1 зі значенням 1, друга — кольору 2 зі значенням 2;
перша карта кольору 2 зі значенням 1, друга — кольору 1 зі значенням 2;
перша карта кольору 2 зі значенням 1, друга — кольору 2 зі значенням 2.