#include <bits/stdc++.h>

using namespace std;

const long long MOD = 1000000007;
using ll = long long;

// intだとオーバーフローする
int main() {
    ll N, K; cin >> N >> K;

    // tの候補
    vector<ll> A;
    ll sqrtN = (ll)sqrt(N) + 1;
    for (ll i = 0; i < sqrtN; i++) {
            A.push_back(i);
    }
    for (ll i = sqrtN - 1; i > 0; i--) {
            A.push_back(ceil(N/i));
    }
    // for (auto e : A) {
    //     cout << e << ",";
    // }
    // cout << "\n";
    vector<ll> dp1(A.size(), 1);
    dp1[0] = 0;

    for (ll i = 1; i <= K; i++) {
        vector<ll> dp2(dp1.size());
        for (ll j = 1; j < ll(A.size()); j++) {
            dp2[j] = (dp2[j-1] + dp1[dp1.size()-j]*(A[j]-A[j-1])) % MOD;
        }
        copy(dp2.begin(), dp2.end(), dp1.begin());
    }

    ll ans = dp1[dp1.size()-1];
    cout << ans << "\n";

}
### 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;

const long long MOD = 1000000007;
using ll = long long;

// intだとオーバーフローする
int main() {
    ll N, K; cin >> N >> K;

    // tの候補
    vector<ll> A;
    ll sqrtN = (ll)sqrt(N) + 1;
    for (ll i = 0; i < sqrtN; i++) {
            A.push_back(i);
    }
    for (ll i = sqrtN - 1; i > 0; i--) {
            A.push_back(ceil(N/i));
    }
    // for (auto e : A) {
    //     cout << e << ",";
    // }
    // cout << "\n";
    vector<ll> dp1(A.size(), 1);
    dp1[0] = 0;

    for (ll i = 1; i <= K; i++) {
        vector<ll> dp2(dp1.size());
        for (ll j = 1; j < ll(A.size()); j++) {
            dp2[j] = (dp2[j-1] + dp1[dp1.size()-j]*(A[j]-A[j-1])) % MOD;
        }
        copy(dp2.begin(), dp2.end(), dp1.begin());
    }

    ll ans = dp1[dp1.size()-1];
    cout << ans << "\n";

}
```