Олимпиадный тренинг

Задача . C. k-дерево


Совсем недавно креативный студент Леша прослушал лекцию по деревьям. После лекции Леша был вдохновлен и придумал собственное дерево, которое он назвал k-дерево.

k-дерево — это бесконечное корневое дерево, в котором:

  • каждая вершина имеет ровно k сыновей;
  • каждое ребро имеет некоторый вес;
  • если рассмотреть ребра из некоторой вершины в ее сыновей (ровно k ребер), то их веса будут равны 1, 2, 3, ..., k.

На рисунке ниже представлен фрагмент 3-дерева.

Как только Дима, хороший друг Леши, узнал про это дерево, его сразу заинтересовал вопрос: «Сколько существует путей с суммарным весом ребер равным n, которые начинаются в корне k-дерева, а также содержат хотя бы одно ребро веса не меньше d?».

Помогите Диме узнать ответ на его вопрос. Так как количество путей может быть достаточно большим, найдите остаток от деления ответа на 1000000007 (109 + 7).

Входные данные

В единственной строке, через пробел, записано три целых числа: n, k и d (1 ≤ n, k ≤ 100; 1 ≤ d ≤ k).

Выходные данные

Выведите единственное целое число — ответ на задачу по модулю 1000000007 (109 + 7).


Примеры
Входные данныеВыходные данные
1 3 3 2
3
2 3 3 3
1
3 4 3 2
6
4 4 5 2
7

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя