eolymp
bolt
Try our new interface for solving problems

Ones

Рассмотрим всевозможные строки, состоящие из n символов – нулей и единиц (всего имеется 2n таких строк). Нас интересуют те из них, в которых где-нибудь встречается отрезок из k подряд идущих единиц. Точнее, нас интересует количество таких строк. Это количество может быть довольно большим, поэтому следует выводить остаток от деления этого количества на 1000007.

Input

Two positive integers n and k (1n100000, 1k100).

Output

Выведите остаток от деления на 1000007 количества строк, в которых встречается хотя бы один отрезок из k подряд идущих единиц.

Time limit 1 second
Memory limit 64 MiB
Input example #1
3 2
Output example #1
3
Input example #2
5 1
Output example #2
31
Input example #3
7 10
Output example #3
0
Source 2017-2018 Azerbaijan, Finals