#include <bits/stdc++.h>
using namespace std;
#ifdef _debug
#define dout(i) cout << #i << ' ' << i << ' '
#else 
#define dout(i) //
#endif
using ll = long long;
using ull = unsigned long long;
using ul = unsigned;
const int maxn = 101;
const int maxq = 1000000;
const int tomod = 1000000007;
int n, k;
ll dp[maxn][maxq];/*, pf[maxn][maxq];*/
int v[maxq], vn;
int main(){
	ios_base::sync_with_stdio(0), cin.tie(0);
	cin >> n >> k;
	{
		set<int> val; 
		for(int i = 1;i * i <= n;++i)val.insert(i), val.insert(n/i);
		for(auto &i : val)v[++vn] = i;
	}
	fill(dp[0], dp[0] + maxq, 1);
	for(int i = 1;i <= k;++i){
		for(int j = 1;j <= vn;++j){
			dp[i][j] = ((v[j]-v[j-1]) * (dp[i-1][lower_bound(v+1, v+1+vn, n/v[j]) - v]) % tomod + dp[i][j-1]) % tomod;
		}
	}
	cout << dp[k][vn] << '\n';
}
### 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
#include <bits/stdc++.h>
using namespace std;
#ifdef _debug
#define dout(i) cout << #i << ' ' << i << ' '
#else 
#define dout(i) //
#endif
using ll = long long;
using ull = unsigned long long;
using ul = unsigned;
const int maxn = 101;
const int maxq = 1000000;
const int tomod = 1000000007;
int n, k;
ll dp[maxn][maxq];/*, pf[maxn][maxq];*/
int v[maxq], vn;
int main(){
	ios_base::sync_with_stdio(0), cin.tie(0);
	cin >> n >> k;
	{
		set<int> val; 
		for(int i = 1;i * i <= n;++i)val.insert(i), val.insert(n/i);
		for(auto &i : val)v[++vn] = i;
	}
	fill(dp[0], dp[0] + maxq, 1);
	for(int i = 1;i <= k;++i){
		for(int j = 1;j <= vn;++j){
			dp[i][j] = ((v[j]-v[j-1]) * (dp[i-1][lower_bound(v+1, v+1+vn, n/v[j]) - v]) % tomod + dp[i][j-1]) % tomod;
		}
	}
	cout << dp[k][vn] << '\n';
}
```