#include<bits/stdc++.h>
#include <array>
using namespace std;
using ULL = unsigned long long;
using UL = unsigned;
using LL = long long;
#define rep(i, n) for(UL i = 0; i < (n); i++)

struct Problem {

	const ULL M = 1000000007;

	ULL dp[101][100000] = {};
	
	void Solve() {
		UL N, K; cin >> N >> K;
		UL n = 1;
		while (n * n <= N) n++; n--;
		UL nn = n;
		vector<UL> Sz(n);
		for (UL i = 0; i < n; i++) { Sz[i] = 1; }
		UL p = n, d = N / (p + 1);
		while (d > 0) {
			Sz.push_back(N / d - p);
			p = N / d;
			nn++;
			d--;
		}
		rep (i, nn) dp[0][i] = 1;
		for (UL k = 1; k <= K; k++) {
			ULL S = 0;
			for (UL np = 0; np < nn; np++) {
				S += Sz[np] * dp[k - 1][nn - np - 1];
				S %= M;
				dp[k][np] = S;
			}
		}
		cout << dp[K][nn - 1] << endl;
	}


	Problem();
};
int main() {
	unique_ptr<Problem> p(new Problem());
	p->Solve();
	return 0;
}
Problem::Problem() {
	cout << fixed << setprecision(10);
}

### Prompt

Please formulate 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<bits/stdc++.h>
#include <array>
using namespace std;
using ULL = unsigned long long;
using UL = unsigned;
using LL = long long;
#define rep(i, n) for(UL i = 0; i < (n); i++)

struct Problem {

	const ULL M = 1000000007;

	ULL dp[101][100000] = {};
	
	void Solve() {
		UL N, K; cin >> N >> K;
		UL n = 1;
		while (n * n <= N) n++; n--;
		UL nn = n;
		vector<UL> Sz(n);
		for (UL i = 0; i < n; i++) { Sz[i] = 1; }
		UL p = n, d = N / (p + 1);
		while (d > 0) {
			Sz.push_back(N / d - p);
			p = N / d;
			nn++;
			d--;
		}
		rep (i, nn) dp[0][i] = 1;
		for (UL k = 1; k <= K; k++) {
			ULL S = 0;
			for (UL np = 0; np < nn; np++) {
				S += Sz[np] * dp[k - 1][nn - np - 1];
				S %= M;
				dp[k][np] = S;
			}
		}
		cout << dp[K][nn - 1] << endl;
	}


	Problem();
};
int main() {
	unique_ptr<Problem> p(new Problem());
	p->Solve();
	return 0;
}
Problem::Problem() {
	cout << fixed << setprecision(10);
}

```