#include <bits/stdc++.h>
using namespace std;

long d[3][111111];
int main() {
	int n, k, p = 1e9 + 7;
	cin >> n >> k;
	int m = sqrt(n);
	fill(d[0], d[0] + m + 1, 1);
	d[0][0] = m;
	d[2][0] = 1;
	for (int i = 1; i <= k; i++) {
		long x = 0, y = d[(i + 1) % 3][0];
		d[i % 3][0] = 0;
		for (int a = m; a; a--) {
			(d[i % 3][a] = x + (n / a - m)*y + d[(i + 2) % 3][0]) %= p;
			(x += (n / a - m)*d[(i + 1) % 3][a]) %= p;
			(y -= d[(i + 1) % 3][a] - p) %= p;
			(d[i % 3][0] += d[i % 3][a]) %= p;
		}
	}
	cout << d[k % 3][1] << 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;

long d[3][111111];
int main() {
	int n, k, p = 1e9 + 7;
	cin >> n >> k;
	int m = sqrt(n);
	fill(d[0], d[0] + m + 1, 1);
	d[0][0] = m;
	d[2][0] = 1;
	for (int i = 1; i <= k; i++) {
		long x = 0, y = d[(i + 1) % 3][0];
		d[i % 3][0] = 0;
		for (int a = m; a; a--) {
			(d[i % 3][a] = x + (n / a - m)*y + d[(i + 2) % 3][0]) %= p;
			(x += (n / a - m)*d[(i + 1) % 3][a]) %= p;
			(y -= d[(i + 1) % 3][a] - p) %= p;
			(d[i % 3][0] += d[i % 3][a]) %= p;
		}
	}
	cout << d[k % 3][1] << endl;
	return 0;
}


```