Quite recently a creative student Lesha had a lecture on trees. After the lecture Lesha was inspired and came up with the tree of his own which he called a *k*-tree.

A *k*-tree is an infinite rooted tree where:
 -  each vertex has exactly *k* children; -  each edge has some weight; -  if we look at the edges that goes from some vertex to its children (exactly *k* edges), then their weights will equal 1, 2, 3, ..., *k*. 
The picture below shows a part of a 3-tree.

 

 <img class="tex-graphics" src="https://espresso.codeforces.com/61ac5ac17c4d2f220968eff8fb59bb3c8dc77edf.png" style="max-width: 100.0%;max-height: 100.0%;"/>

 

Help Dima find an answer to his question. As the number of ways can be rather large, print it modulo 1000000007 (10<sup class="upper-index">9</sup> + 7).
A single line contains three space-separated integers: *n*, *k* and *d* (1 ≤ *n*, *k* ≤ 100; 1 ≤ *d* ≤ *k*).
"""
## NOTE
- good knapsack variant
- converting "at least" to "exactly":
    - "at least d" == "exactly max" - "exactly d-1"

## INFO
431_C_KTree
https://codeforces.com/problemset/problem/431/C

## TAGS
- dp
- implementation
- trees
- *1600

## TESTS
-in:
3 3 2
-out:
3

-in:
3 3 3
-out:
1

-in:
4 3 2
-out:
6

-in:
4 5 2
-out:
7

"""

#%%

import sys
import time

start_time = time.time()
FILE = False

# ---------------------- HELPER INPUT FUNCTIONS ----------------------#


def get_int():
    return int(sys.stdin.readline())


def get_str():
    return sys.stdin.readline().strip()


def get_list_int():
    return list(map(int, sys.stdin.readline().split()))


def get_list_str():
    return list(sys.stdin.readline().split())


# -------------------------- SOLVE FUNCTION --------------------------#


def solve():
    """
    approach 1: converting "at least d"
    n=3
    k=3
    d=2

     0 1 2 3
    [0 0 0 0]
    [1 1 2 2+1+1]
    [1 0 1 1+1+]
    [1 1 1 1+1+1]
    """
    n, k, d = get_list_int()
    mod = 10**9 + 7

    dp1 = [0] * (n + 1)
    dp1[0] = 1

    # making exactly k
    for j in range(1, n + 1):
        for c in range(1, k + 1):
            if j >= c:
                dp1[j] += dp1[j - c]

    dp2 = [0] * (n + 1)
    dp2[0] = 1
    # making exactly d - 1
    for j in range(1, n + 1):
        for c in range(1, d - 1 + 1):
            if j >= c:
                dp2[j] += dp2[j - c]

    print((dp1[-1] - dp2[-1]) % mod)


# -------------------------- MAIN FUNCTION --------------------------#


def main():
    if FILE:
        sys.stdin = open("./src/codeforces/input.txt", "r")

    solve()

    if FILE:
        print("\033[95m" + "> time elapsed: ", (time.time() - start_time) * 1000.0, "ms")


main()
