#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
ll dp[105][200000];
ll arr[100000];
const ll mod = 1e9+7;
int main()
{
    ll n, k; cin >> n >> k;
    ll sqrt_n = sqrt(n);
    for (ll i = 1, sum = 0; i <= 2 * sqrt_n; i++)
    {
        if (i <= sqrt_n){arr[i]++; sum++;}
        else {
            arr[i] += n / (2 * sqrt_n - i + 1) - sum;
            sum += arr[i];
        }
        dp[0][i] = sum;
    }
    for (ll i = 1; i <= k; i++)
        for (ll j = 0; j < 2 * sqrt_n; j++)
            dp[i][j+1] = (dp[i-1][sqrt_n * 2 - j] * arr[j+1] + dp[i][j])%mod;
    cout << dp[k-1][sqrt_n*2] << endl;
}
### Prompt

Generate 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<bits/stdc++.h>

using namespace std;
typedef long long ll;
ll dp[105][200000];
ll arr[100000];
const ll mod = 1e9+7;
int main()
{
    ll n, k; cin >> n >> k;
    ll sqrt_n = sqrt(n);
    for (ll i = 1, sum = 0; i <= 2 * sqrt_n; i++)
    {
        if (i <= sqrt_n){arr[i]++; sum++;}
        else {
            arr[i] += n / (2 * sqrt_n - i + 1) - sum;
            sum += arr[i];
        }
        dp[0][i] = sum;
    }
    for (ll i = 1; i <= k; i++)
        for (ll j = 0; j < 2 * sqrt_n; j++)
            dp[i][j+1] = (dp[i-1][sqrt_n * 2 - j] * arr[j+1] + dp[i][j])%mod;
    cout << dp[k-1][sqrt_n*2] << endl;
}
```