#include"bits/stdc++.h"
#include<cassert>
using namespace std;
#define int long long
#define rep(i,n) for(int i=0;i<n;i++)
const int mod = 1000000007;
const int inf = 1ll << 61;
typedef pair<int, int> P;
typedef pair<int, P>PP;
int dp[102][100000];
int M2[100005],M3[100005];

signed main() {
	int n, k; cin >> n >> k;
	map<int, int>M, M1;//M1...nub->id
	for (int i = 1; i*i <= n; i++) {
		int x = n / i;
		M[i] = n / i;
		M[x] = n / x;
	}
	vector<int>v;
	for (auto itr = M.begin(); itr != M.end(); itr++) {
		v.push_back(itr->first);
	}
	int ld = 0;
	rep(i, v.size()) {
		dp[0][i] = v[i];
		M1[v[i]] = i;
		M2[i] = v[i];
		M3[i] = v[i] - ld;
		ld = v[i];
	}

	rep(i, k) {
		rep(j, v.size()) {
			dp[i + 1][j] += dp[i][M1[n / M2[j]]]*M3[j];
			dp[i + 1][j] %= mod;
		}
		rep(j, v.size()) {
			dp[i+1][j + 1] += dp[i+1][j];
			dp[i + 1][j + 1] %= mod;
		}
	}
	cout << dp[k - 1][v.size() - 1] << endl;
}

### Prompt

In Cpp, your task is to solve 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<cassert>
using namespace std;
#define int long long
#define rep(i,n) for(int i=0;i<n;i++)
const int mod = 1000000007;
const int inf = 1ll << 61;
typedef pair<int, int> P;
typedef pair<int, P>PP;
int dp[102][100000];
int M2[100005],M3[100005];

signed main() {
	int n, k; cin >> n >> k;
	map<int, int>M, M1;//M1...nub->id
	for (int i = 1; i*i <= n; i++) {
		int x = n / i;
		M[i] = n / i;
		M[x] = n / x;
	}
	vector<int>v;
	for (auto itr = M.begin(); itr != M.end(); itr++) {
		v.push_back(itr->first);
	}
	int ld = 0;
	rep(i, v.size()) {
		dp[0][i] = v[i];
		M1[v[i]] = i;
		M2[i] = v[i];
		M3[i] = v[i] - ld;
		ld = v[i];
	}

	rep(i, k) {
		rep(j, v.size()) {
			dp[i + 1][j] += dp[i][M1[n / M2[j]]]*M3[j];
			dp[i + 1][j] %= mod;
		}
		rep(j, v.size()) {
			dp[i+1][j + 1] += dp[i+1][j];
			dp[i + 1][j + 1] %= mod;
		}
	}
	cout << dp[k - 1][v.size() - 1] << endl;
}

```