#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double D;
typedef pair<ll,ll> P;
#define M 1000000007
#define F first
#define S second
#define PB push_back
#define INF 100000000000000000
#define B 33000
ll n,m,r,l,dp[40005][105],dq[40005][105],s[40005],ans;
int main(void){
	cin>>n>>m;
	while((r+1LL)*(r+1LL)<=n)r++;
	if(r*(r+1LL)<=n)l=r;
	else l=r-1;
	for(ll i=1;i<=l;i++)s[i]=n/i-n/(i+1);
	for(ll i=1;i<=r;i++)dp[i][0]=1;
	for(ll i=1;i<=l;i++)dq[i][0]=s[i];
	for(ll i=1;i<m;i++){
		for(ll j=1;j<=r;j++)dp[j][i-1]=(dp[j][i-1]+dp[j-1][i-1])%M;
		for(ll j=1;j<=l;j++)dq[j][i]=dp[j][i-1]*s[j]%M;
		for(ll j=l-1;j>=1;j--)dq[j][i-1]=(dq[j][i-1]+dq[j+1][i-1])%M;
		for(ll j=1;j<=r;j++)dp[j][i]=(dp[r][i-1]+dq[j][i-1])%M;
	}
	for(ll i=1;i<=r;i++)ans=(ans+dp[i][m-1])%M;
	for(ll i=1;i<=l;i++)ans=(ans+dq[i][m-1])%M;
	cout<<ans<<endl;
}
### 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;
typedef long long ll;
typedef double D;
typedef pair<ll,ll> P;
#define M 1000000007
#define F first
#define S second
#define PB push_back
#define INF 100000000000000000
#define B 33000
ll n,m,r,l,dp[40005][105],dq[40005][105],s[40005],ans;
int main(void){
	cin>>n>>m;
	while((r+1LL)*(r+1LL)<=n)r++;
	if(r*(r+1LL)<=n)l=r;
	else l=r-1;
	for(ll i=1;i<=l;i++)s[i]=n/i-n/(i+1);
	for(ll i=1;i<=r;i++)dp[i][0]=1;
	for(ll i=1;i<=l;i++)dq[i][0]=s[i];
	for(ll i=1;i<m;i++){
		for(ll j=1;j<=r;j++)dp[j][i-1]=(dp[j][i-1]+dp[j-1][i-1])%M;
		for(ll j=1;j<=l;j++)dq[j][i]=dp[j][i-1]*s[j]%M;
		for(ll j=l-1;j>=1;j--)dq[j][i-1]=(dq[j][i-1]+dq[j+1][i-1])%M;
		for(ll j=1;j<=r;j++)dp[j][i]=(dp[r][i-1]+dq[j][i-1])%M;
	}
	for(ll i=1;i<=r;i++)ans=(ans+dp[i][m-1])%M;
	for(ll i=1;i<=l;i++)ans=(ans+dq[i][m-1])%M;
	cout<<ans<<endl;
}
```