#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&(-x))
#define N 100015
#define LL long long
const int mo = 1e9 + 7;
struct xx {
	int L,R;
} num[N<<2];
int dp[105][N<<2]; // 第i位用了 第j段的数字.
int main() {
	int n,k;
	cin >> n >> k;
	int x = 1,cot = 0;
	while(x <= n) {
		int t = n/x,R = n/t;
		num[++cot] = (xx) <% x,R %>;
		x = R+1;
	}
	for(int i=1; i<=cot; i++) dp[1][i] = num[i].R - num[i].L + 1,(dp[1][i] += dp[1][i-1]) %= mo;
	for(int T=2; T<=k; T++) {
		for(int i=1; i<=cot; i++) {
			dp[T][i] = 1LL*dp[T-1][cot-i+1]*(num[i].R-num[i].L+1)%mo;
			(dp[T][i] += dp[T][i-1]) %= mo;
		}
	}
	printf("%d",dp[k][cot]);
	return 0;
}
### Prompt

Generate 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 <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&(-x))
#define N 100015
#define LL long long
const int mo = 1e9 + 7;
struct xx {
	int L,R;
} num[N<<2];
int dp[105][N<<2]; // 第i位用了 第j段的数字.
int main() {
	int n,k;
	cin >> n >> k;
	int x = 1,cot = 0;
	while(x <= n) {
		int t = n/x,R = n/t;
		num[++cot] = (xx) <% x,R %>;
		x = R+1;
	}
	for(int i=1; i<=cot; i++) dp[1][i] = num[i].R - num[i].L + 1,(dp[1][i] += dp[1][i-1]) %= mo;
	for(int T=2; T<=k; T++) {
		for(int i=1; i<=cot; i++) {
			dp[T][i] = 1LL*dp[T-1][cot-i+1]*(num[i].R-num[i].L+1)%mo;
			(dp[T][i] += dp[T][i-1]) %= mo;
		}
	}
	printf("%d",dp[k][cot]);
	return 0;
}
```