// F - Small Products
#include <bits/stdc++.h>

using namespace std;

#define	MOD	1000000007

int main(int argc, char *argv[])
{
	long long n, k;
	cin >> n >> k;
	int m = sqrt(n);

	vector<vector<long long> > s(k, vector<long long>(m + 1)), b(k, vector<long long>(m + 1));
	for (int i = 1; i <= m; i++) {
		s[0][i] = i;
		b[0][i] = b[0][i - 1] + n / i - (i == m ? m : n / (i + 1));
	}
	for (int i = 1; i < k; i++)
		for (int j = 1; j <= m; j++) {
			s[i][j] = (s[i][j - 1] + s[i - 1][m]) % MOD;
			s[i][j] = (s[i][j] + b[i - 1][m] - b[i - 1][j - 1] + MOD) % MOD;
			b[i][j] = (b[i][j - 1] + s[i - 1][j] * (n / j - (j == m ? m : n / (j + 1))) % MOD) % MOD;
		}

	cout << (s[k - 1][m] + b[k - 1][m]) % MOD << endl;

	return 0;
}

### Prompt

Construct a cpp code solution to the problem outlined:

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
// F - Small Products
#include <bits/stdc++.h>

using namespace std;

#define	MOD	1000000007

int main(int argc, char *argv[])
{
	long long n, k;
	cin >> n >> k;
	int m = sqrt(n);

	vector<vector<long long> > s(k, vector<long long>(m + 1)), b(k, vector<long long>(m + 1));
	for (int i = 1; i <= m; i++) {
		s[0][i] = i;
		b[0][i] = b[0][i - 1] + n / i - (i == m ? m : n / (i + 1));
	}
	for (int i = 1; i < k; i++)
		for (int j = 1; j <= m; j++) {
			s[i][j] = (s[i][j - 1] + s[i - 1][m]) % MOD;
			s[i][j] = (s[i][j] + b[i - 1][m] - b[i - 1][j - 1] + MOD) % MOD;
			b[i][j] = (b[i][j - 1] + s[i - 1][j] * (n / j - (j == m ? m : n / (j + 1))) % MOD) % MOD;
		}

	cout << (s[k - 1][m] + b[k - 1][m]) % MOD << endl;

	return 0;
}

```