#include<cstdio>
const int M=1e9+7,N=80002;
int n,k,f[102][N],i,j,las,l[N],r[N],cnt,num[N],t,ans;
int min(int x,int y){return x<y?x:y;}
int main(){
	scanf("%d%d",&n,&k);
	for (i=1;i<=n;i=j+1) j=n/(n/i),l[++cnt]=i,r[cnt]=j,num[cnt]=n/i,f[k][cnt]=num[cnt];
	for (t=k-1;t;t--)
		for (las=0,i=cnt,j=1;i;i--){
			f[t][i]=(f[t][i+1]-las+M)%M;
			for (;j<=cnt && l[j]<=num[i];j++) (f[t][i]+=las=1ll*f[t+1][j]*(min(num[i],r[j])-l[j]+1)%M)%=M;
			j--;
		}
	printf("%d",f[1][1]);
}
### 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<cstdio>
const int M=1e9+7,N=80002;
int n,k,f[102][N],i,j,las,l[N],r[N],cnt,num[N],t,ans;
int min(int x,int y){return x<y?x:y;}
int main(){
	scanf("%d%d",&n,&k);
	for (i=1;i<=n;i=j+1) j=n/(n/i),l[++cnt]=i,r[cnt]=j,num[cnt]=n/i,f[k][cnt]=num[cnt];
	for (t=k-1;t;t--)
		for (las=0,i=cnt,j=1;i;i--){
			f[t][i]=(f[t][i+1]-las+M)%M;
			for (;j<=cnt && l[j]<=num[i];j++) (f[t][i]+=las=1ll*f[t+1][j]*(min(num[i],r[j])-l[j]+1)%M)%=M;
			j--;
		}
	printf("%d",f[1][1]);
}
```