#include <cstdio>
#include <vector>
#include <queue>
#include <cstdint>
#include <algorithm>
using namespace std;

typedef int64_t i64;
const i64 mod = 1e9 + 7;

int main()
{
	i64 n, k;

	scanf("%lld%lld", &n, &k);

	int sq = 0;
	while((sq + 1) * (sq + 1) <= n) {
		sq += 1;
	}

	vector<i64> maxi(sq * 2);

	for(int i = 0; i < sq; i++) {
		maxi[i] = i + 1;
	}
	for(int i = sq; i < sq * 2; i++) {
		maxi[i] = n / maxi[sq * 2 - 1 - i];
	}

	vector<i64> prev(sq * 2), cur(sq * 2, 1);

	for(int step = 1; step <= k; step++) {

		swap(prev, cur);
		fill(cur.begin(), cur.end(), 0);

		cur[0] = prev[sq * 2 - 1];

		for(int i = 1; i < sq * 2; i++) {
			i64 r = maxi[i] - maxi[i - 1];
			i64 v = r * prev[sq * 2 - 1 - i];
			cur[i] = (cur[i - 1] + v) % mod;
		}
	}

	printf("%lld\n", cur[sq * 2 - 1]);

	return 0;
}

### 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 <cstdio>
#include <vector>
#include <queue>
#include <cstdint>
#include <algorithm>
using namespace std;

typedef int64_t i64;
const i64 mod = 1e9 + 7;

int main()
{
	i64 n, k;

	scanf("%lld%lld", &n, &k);

	int sq = 0;
	while((sq + 1) * (sq + 1) <= n) {
		sq += 1;
	}

	vector<i64> maxi(sq * 2);

	for(int i = 0; i < sq; i++) {
		maxi[i] = i + 1;
	}
	for(int i = sq; i < sq * 2; i++) {
		maxi[i] = n / maxi[sq * 2 - 1 - i];
	}

	vector<i64> prev(sq * 2), cur(sq * 2, 1);

	for(int step = 1; step <= k; step++) {

		swap(prev, cur);
		fill(cur.begin(), cur.end(), 0);

		cur[0] = prev[sq * 2 - 1];

		for(int i = 1; i < sq * 2; i++) {
			i64 r = maxi[i] - maxi[i - 1];
			i64 v = r * prev[sq * 2 - 1 - i];
			cur[i] = (cur[i - 1] + v) % mod;
		}
	}

	printf("%lld\n", cur[sq * 2 - 1]);

	return 0;
}

```