#include <iostream>
using namespace std;
typedef long long ll;

const ll MOD = 1000000007;

int dpl[102][50000];
int dph[102][50000];

int main()
{
    ll n, k;
    cin >> n >> k;
    ll m = 1;
    for(; m * m <= n; m++);
    m--;
    for(ll j = 1; j <= m; j++){
        dpl[1][j] = j;
        dph[1][j] = n / j;
    }
    for(int i = 2; i <= k; i++){
        for(int j = 1; j <= m; j++){
            dpl[i][j] = (dph[i - 1][j] + dpl[i][j - 1]) % MOD;
        }
        if(m * (m + 1) > n) dph[i][m] = dpl[i][m];
        else dph[i][m] = (dpl[i - 1][m] * (n / m - m) + dpl[i][m]) % MOD;
        for(int j = m - 1; j >= 1; j--){
            dph[i][j] = (dpl[i - 1][j] * (n / j - n / (j + 1)) + dph[i][j + 1]) % MOD;
        }
    }
    cout << dph[k][1] << endl;
}
### Prompt

Your challenge is to write a Cpp solution to 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 <iostream>
using namespace std;
typedef long long ll;

const ll MOD = 1000000007;

int dpl[102][50000];
int dph[102][50000];

int main()
{
    ll n, k;
    cin >> n >> k;
    ll m = 1;
    for(; m * m <= n; m++);
    m--;
    for(ll j = 1; j <= m; j++){
        dpl[1][j] = j;
        dph[1][j] = n / j;
    }
    for(int i = 2; i <= k; i++){
        for(int j = 1; j <= m; j++){
            dpl[i][j] = (dph[i - 1][j] + dpl[i][j - 1]) % MOD;
        }
        if(m * (m + 1) > n) dph[i][m] = dpl[i][m];
        else dph[i][m] = (dpl[i - 1][m] * (n / m - m) + dpl[i][m]) % MOD;
        for(int j = m - 1; j >= 1; j--){
            dph[i][j] = (dpl[i - 1][j] * (n / j - n / (j + 1)) + dph[i][j + 1]) % MOD;
        }
    }
    cout << dph[k][1] << endl;
}
```