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

int N, K;
LL dp[2][SQRT];
map<int, int> pos;
vector<int> ps;

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	
	cin >> N >> K;
	
	int l = 1;
	ps.push_back(0);
	while (l <= N) {
		ps.push_back(N / (N / l));
		pos[ps.back()] = ps.size() - 1;
		l = N / (N / l) + 1;
	}
	
	for (int i = 1; i < ps.size(); i++) {
		dp[1][i] = ps[i];
	}
	for (int i = 2; i <= K; i++) {
		LL *cur = dp[i % 2], *pre = dp[(i - 1) % 2];
		for (int j = 1; j < ps.size(); j++) {
			cur[j] = ((ps[j] - ps[j - 1]) * pre[pos[N / ps[j]]] + cur[j - 1]) % MOD;
		}
	}
	
	cout << dp[K % 2][ps.size() - 1] << '\n';
}
### Prompt

Create a solution in CPP for 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>
#define LL long long
const LL MOD = 1000000007;
const int SQRT = 66000;
using namespace std;

int N, K;
LL dp[2][SQRT];
map<int, int> pos;
vector<int> ps;

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	
	cin >> N >> K;
	
	int l = 1;
	ps.push_back(0);
	while (l <= N) {
		ps.push_back(N / (N / l));
		pos[ps.back()] = ps.size() - 1;
		l = N / (N / l) + 1;
	}
	
	for (int i = 1; i < ps.size(); i++) {
		dp[1][i] = ps[i];
	}
	for (int i = 2; i <= K; i++) {
		LL *cur = dp[i % 2], *pre = dp[(i - 1) % 2];
		for (int j = 1; j < ps.size(); j++) {
			cur[j] = ((ps[j] - ps[j - 1]) * pre[pos[N / ps[j]]] + cur[j - 1]) % MOD;
		}
	}
	
	cout << dp[K % 2][ps.size() - 1] << '\n';
}
```