#include<bits/stdc++.h>

#define ll long long
#define fornum(A,B,C) for(A=B;A<C;A++)
#define mp make_pair
#define pii pair<int,int>
#define pll pair<ll,ll>

using namespace std;

/////////////////////////////////////////////////////
#define MOD ((ll)1e9+7)
ll N, K,rN;
ll dp[111][101010];

ll i,j,k,l,ans;
int main(){
    scanf("%lld%lld", &N,&K);
    for (rN = 1; rN * rN <= N;rN++)
        ;
    dp[0][1] = 1;
    fornum(j,1,rN){
        dp[1][j] = 1;
    }
    fornum(i,2,K+2){
        ll a=0, b=rN-1, c = 0;
        fornum(j,1,rN){
            a = (a + dp[i - 1][j]) % MOD;
        }
        fornum(j,1,rN){
            c = (c + dp[i - 2][j]) % MOD;
        }
        for (j = rN - 1; j >= 1;j--)
        {
            a = ( a+c * (N / j-b))%MOD;
            dp[i][j] = a;
            b = N / j;
            c = (c + MOD - dp[i - 2][j]) % MOD;
        }
    }
    
    ans = (dp[K + 1][1] +MOD) % MOD;

    printf("%lld", ans);

    return 0;
}
### Prompt

Create a solution in cpp for the following problem:

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

### Response

```cpp
#include<bits/stdc++.h>

#define ll long long
#define fornum(A,B,C) for(A=B;A<C;A++)
#define mp make_pair
#define pii pair<int,int>
#define pll pair<ll,ll>

using namespace std;

/////////////////////////////////////////////////////
#define MOD ((ll)1e9+7)
ll N, K,rN;
ll dp[111][101010];

ll i,j,k,l,ans;
int main(){
    scanf("%lld%lld", &N,&K);
    for (rN = 1; rN * rN <= N;rN++)
        ;
    dp[0][1] = 1;
    fornum(j,1,rN){
        dp[1][j] = 1;
    }
    fornum(i,2,K+2){
        ll a=0, b=rN-1, c = 0;
        fornum(j,1,rN){
            a = (a + dp[i - 1][j]) % MOD;
        }
        fornum(j,1,rN){
            c = (c + dp[i - 2][j]) % MOD;
        }
        for (j = rN - 1; j >= 1;j--)
        {
            a = ( a+c * (N / j-b))%MOD;
            dp[i][j] = a;
            b = N / j;
            c = (c + MOD - dp[i - 2][j]) % MOD;
        }
    }
    
    ans = (dp[K + 1][1] +MOD) % MOD;

    printf("%lld", ans);

    return 0;
}
```