#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll MOD = 1000000007;

ll low[100][33333], high[100][33333], Sa[33333];

int main(){
	int N, K;
	cin >> N >> K;
	int nr = sqrt(N), bo = 0;
	for (int j = 1;j <= nr;j++) {
		low[0][j] = 1;
		Sa[j] = high[0][j] = N / j;
	}

	for (int j = 1;j <= nr;j++) {
		Sa[j] -= Sa[j + 1];
		high[0][j] -= high[0][j + 1];
	}
	for (int j = 1;j <= nr;j++)low[0][j] += low[0][j - 1];
	Sa[nr] -= low[0][nr];
	high[0][nr] -= low[0][nr];
	for (int j = nr;j > 0;j--)high[0][j] += high[0][j + 1];

	for (int i = 1;i < K;i++) {
		for (int j = 1;j <= nr;j++) {
			low[i][j] = low[i - 1][nr] + high[i - 1][j];
			high[i][j] = low[i - 1][j] * Sa[j];
			low[i][j] %= MOD;
			high[i][j] %= MOD;
		}
		for (int j = 1;j <= nr;j++)low[i][j] += low[i][j - 1], low[i][j] %= MOD;
		for (int j = nr;j > 0;j--)high[i][j] += high[i][j + 1], high[i][j] %= MOD;
	}

	cout << (low[K - 1][nr] + high[K - 1][1]) % MOD << endl;
}
### Prompt

Develop a solution in CPP 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;
#define ll long long
const ll MOD = 1000000007;

ll low[100][33333], high[100][33333], Sa[33333];

int main(){
	int N, K;
	cin >> N >> K;
	int nr = sqrt(N), bo = 0;
	for (int j = 1;j <= nr;j++) {
		low[0][j] = 1;
		Sa[j] = high[0][j] = N / j;
	}

	for (int j = 1;j <= nr;j++) {
		Sa[j] -= Sa[j + 1];
		high[0][j] -= high[0][j + 1];
	}
	for (int j = 1;j <= nr;j++)low[0][j] += low[0][j - 1];
	Sa[nr] -= low[0][nr];
	high[0][nr] -= low[0][nr];
	for (int j = nr;j > 0;j--)high[0][j] += high[0][j + 1];

	for (int i = 1;i < K;i++) {
		for (int j = 1;j <= nr;j++) {
			low[i][j] = low[i - 1][nr] + high[i - 1][j];
			high[i][j] = low[i - 1][j] * Sa[j];
			low[i][j] %= MOD;
			high[i][j] %= MOD;
		}
		for (int j = 1;j <= nr;j++)low[i][j] += low[i][j - 1], low[i][j] %= MOD;
		for (int j = nr;j > 0;j--)high[i][j] += high[i][j + 1], high[i][j] %= MOD;
	}

	cout << (low[K - 1][nr] + high[K - 1][1]) % MOD << endl;
}
```