#include <bits/stdc++.h>

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    long long prime = 1000000007;
    int n, k;
    cin >> n >> k;
    int m = 1;
    while ((m+1) * (m+1) <= n) ++m;
    vector<int> ws(2*m, 1);
    ws[m] = n/m - m;
    for (int i = m+1; i < 2*m; ++i) {
        ws[i] = n/(2*m-i) - n/(2*m-i+1);
    }
    vector<vector<long long>> res(k+2, vector<long long>(2*m, 0LL));
    res[0][0] = 1LL;
    for (int j = 1; j <= k+1; ++j) {
        long long running = 0LL;
        for (int i = 2*m-1; i >= 0; --i) {
            running = (running + res[j-1][2*m-1-i]) % prime;
            res[j][i] = (running * ws[i]) % prime;
        }
    }
    cout << res[k+1][0] << endl;
    return 0;
}

### Prompt

Please provide a cpp coded solution to the problem described below:

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;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    long long prime = 1000000007;
    int n, k;
    cin >> n >> k;
    int m = 1;
    while ((m+1) * (m+1) <= n) ++m;
    vector<int> ws(2*m, 1);
    ws[m] = n/m - m;
    for (int i = m+1; i < 2*m; ++i) {
        ws[i] = n/(2*m-i) - n/(2*m-i+1);
    }
    vector<vector<long long>> res(k+2, vector<long long>(2*m, 0LL));
    res[0][0] = 1LL;
    for (int j = 1; j <= k+1; ++j) {
        long long running = 0LL;
        for (int i = 2*m-1; i >= 0; --i) {
            running = (running + res[j-1][2*m-1-i]) % prime;
            res[j][i] = (running * ws[i]) % prime;
        }
    }
    cout << res[k+1][0] << endl;
    return 0;
}

```