#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
const int mod = 1e9+7;
const int maxn = 1e5+15;
int n,k,block;
LL sum[maxn],a[maxn],num[maxn];
int main(){
    cin >> n >> k;
    block = 1;
    for(int i = 1;i <= n; ){
        int t = n/i;
        int up = n/t;
        num[block] = up-i+1;
        sum[block] = t;
        i = up + 1;
        block++;
    }
    for(int i = 2;i <= k; ++i){
        for(int j = 1;j < block; ++j){
            a[j] = sum[j]*num[j]%mod;
        }
        for(int j = 1;j < block; ++j){
            sum[j] = (sum[j-1] + a[j])%mod;
        }
        int t = block/2;
        for(int j = 1;j <= t; ++j) swap(sum[j],sum[block-j]);
    }
    cout << sum[1] << endl;
    return 0;
}
### 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;
const int mod = 1e9+7;
const int maxn = 1e5+15;
int n,k,block;
LL sum[maxn],a[maxn],num[maxn];
int main(){
    cin >> n >> k;
    block = 1;
    for(int i = 1;i <= n; ){
        int t = n/i;
        int up = n/t;
        num[block] = up-i+1;
        sum[block] = t;
        i = up + 1;
        block++;
    }
    for(int i = 2;i <= k; ++i){
        for(int j = 1;j < block; ++j){
            a[j] = sum[j]*num[j]%mod;
        }
        for(int j = 1;j < block; ++j){
            sum[j] = (sum[j-1] + a[j])%mod;
        }
        int t = block/2;
        for(int j = 1;j <= t; ++j) swap(sum[j],sum[block-j]);
    }
    cout << sum[1] << endl;
    return 0;
}
```