Problem: Mashmokh's boss, Bimokh, didn't like Mashmokh. So he fired him. Mashmokh decided to go to university and participate in ACM instead of finding a new job. He wants to become a member of Bamokh's team. In order to join he was given some programming tasks and one week to solve them. Mashmokh is not a very experienced programmer. Actually he is not a programmer at all. So he wasn't able to solve them. That's why he asked you to help him with these tasks. One of these tasks is the following.

A sequence of l integers b1, b2, ..., bl (1 ≤ b1 ≤ b2 ≤ ... ≤ bl ≤ n) is called good if each number divides (without a remainder) by the next number in the sequence. More formally <image> for all i (1 ≤ i ≤ l - 1).

Given n and k find the number of good sequences of length k. As the answer can be rather large print it modulo 1000000007 (109 + 7).

Input

The first line of input contains two space-separated integers n, k (1 ≤ n, k ≤ 2000).

Output

Output a single integer — the number of good sequences of length k modulo 1000000007 (109 + 7).

Examples

Input

3 2


Output

5


Input

6 4


Output

39


Input

2 1


Output

2

Note

In the first sample the good sequences are: [1, 1], [2, 2], [3, 3], [1, 2], [1, 3].

Solution (in PYTHON3):

Solution:
import sys
import os
# import numpy as np
from math import sqrt, gcd, ceil, log, floor, sin, pi
from math import factorial as fact
from bisect import bisect, bisect_left
from collections import defaultdict, Counter, deque
from heapq import heapify, heappush, heappop
from itertools import permutations
input = sys.stdin.readline
def read(): return list(map(int, input().strip().split()))
def read_f(): return list(map(float, input().strip().split()))
# read_f = lambda file:  list(map(int, file.readline().strip().split()))
# from time import time
# sys.setrecursionlimit(5*10**6)


MOD = 10**9 + 7


def main():
    # file1 = open("C:\\Users\\shank\\Desktop\\Comp_Code\\input.txt", "r")
    # n = int(file1.readline().strip());
    # par = list(map(int, file1.read().strip().split(" ")))
    # file1.close()
    # ans_ = []
    n, k = read()
    dp1 = [0]*(n+1)
    dp2 = [0]*(n+1)

    for i in range(1, n+1):dp1[i] = 1
    y = 0

    for i in range(k-1, 0, -1):
        for j in range(1, n+1):
            for x in range(j, n+1, j):
                if y:
                    dp1[j] += dp2[x]
                    dp1[j] %= MOD
                else:
                    dp2[j] += dp1[x]
                    dp2[j] %= MOD
        
        if y:
            dp2 = [0]*(n+1)
        else:
            dp1 = [0]*(n+1)
        y = (y+1)%2
                
            
    # for i in dp:print(i)
    if not y:
        print(sum(dp1)%MOD)
    else:
        print(sum(dp2)%MOD)

    
    # for i in ans_:print(i)
    # file = open("output.txt", "w")
    # file.write(ans+"\n")
    # file.close()


if __name__ == "__main__":
    main()


"""

n = 2, k = 3
1 2 3
    1
    2

  1 1
  1 2
  2 2

1 1 1
1 1 2
1 2 2
2 2 2  

  1 2 3
1 10 4 1
2 3 2 1
3 1 1 1
4 1 1 1


20
4 == 4 



dp[i][j] = multiple of j <= n

"""