Find the number of sequences of length K consisting of positive integers such that the product of any two adjacent elements is at most N, modulo 10^9+7.

Constraints

* 1\leq N\leq 10^9
* ~~1~~ 2\leq K\leq 100 (fixed at 21:33 JST)
* N and K are integers.

Input

Input is given from Standard Input in the following format:


N K


Output

Print the number of sequences, modulo 10^9+7.

Examples

Input

3 2


Output

5


Input

10 3


Output

147


Input

314159265 35


Output

457397712
def calc_floors(N):
    # floor(N / n) (n = 1, ..., N) のとりうる値と
    # 各floorの値を与えるnの範囲（閉区間）を返す
    n_values = list()
    n_ranges = list()
    k = 1
    while k <= N:
        # k = floor(N / n)  <-->  N/(k+1) < n <= N/k
        # N/(k+1)より大きい最小の整数は(N + k + 1) // (k + 1)
        left, right = (N + k + 1) // (k + 1), N // k
        n_values.append(k)
        n_ranges.append((left, right))
        if left == 1:
            break
        k = N // (left - 1)
    return n_values, n_ranges


def main():
    MOD = 10 ** 9 + 7
    N, K = list(map(int, input().split()))
    n_values, n_ranges = calc_floors(N)
    # dp[k][i]: k個目までで題意を満たす＆一番右の数が区分iの範囲に入るような整数の組の個数
    dp = [[0 for _ in range(len(n_values))] for _ in range(K)]
    dp[0][0] = n_values[0]
    for i in range(1, len(n_values)):
        dp[0][i] = n_values[i] - n_values[i - 1]
    dp[0].reverse()
    for k in range(1, K):
        # dpの累積和（後ろから順に）
        csdp = [0 for _ in range(len(n_values))]
        csdp[len(n_values) - 1] = dp[k - 1][len(n_values) - 1]
        for i in range(len(n_values) - 2, -1, -1):
            csdp[i] = csdp[i + 1] + dp[k - 1][i]
        # dpの更新
        for i in range(len(n_values)):
            v = csdp[len(n_values) - i - 1] * (n_ranges[i][1] - n_ranges[i][0] + 1)
            dp[k][i] = v % MOD
    ans = 0
    for i in range(len(n_values)):
        ans += dp[K - 1][i]
        ans %= MOD
    print(ans)


if __name__ == '__main__':
    main()