#include<iostream>
#include<cmath>
#define DIM 70000
#define mod 1000000007
using namespace std;
int n, k, i, j, r, nr, st, dr, mid;
int v[DIM], u[DIM], s[105][DIM];
int main(){
    cin>> n >> k;
    r = sqrt(n * 1.0);
    for(i = 1; i <= r + r; i++){
        if(n / i <= r){
            break;
        }
        v[++nr] = i;
    }
    for(i = r; i >= 1; i--){
        v[++nr] = n / i;
    }
    for(i = 1; i <= nr; i++){
        st = 1;
        dr = nr;
        while(st <= dr){
            mid = (st + dr) / 2;
            if(n / v[i] >= v[mid]){
                st = mid + 1;
            }
            else{
                dr = mid - 1;
            }
        }
        u[i] = dr;
        s[1][i] = s[1][i - 1] + v[i] - v[i - 1];
    }
    for(i = 2; i <= k; i++){
        for(j = 1; j <= nr; j++){
            s[i][j] = (s[i][j - 1] + s[i - 1][ u[j] ] * 1LL * (v[j] - v[j - 1]) ) % mod;
        }
    }
    cout<< s[k][nr];
}

### 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<iostream>
#include<cmath>
#define DIM 70000
#define mod 1000000007
using namespace std;
int n, k, i, j, r, nr, st, dr, mid;
int v[DIM], u[DIM], s[105][DIM];
int main(){
    cin>> n >> k;
    r = sqrt(n * 1.0);
    for(i = 1; i <= r + r; i++){
        if(n / i <= r){
            break;
        }
        v[++nr] = i;
    }
    for(i = r; i >= 1; i--){
        v[++nr] = n / i;
    }
    for(i = 1; i <= nr; i++){
        st = 1;
        dr = nr;
        while(st <= dr){
            mid = (st + dr) / 2;
            if(n / v[i] >= v[mid]){
                st = mid + 1;
            }
            else{
                dr = mid - 1;
            }
        }
        u[i] = dr;
        s[1][i] = s[1][i - 1] + v[i] - v[i - 1];
    }
    for(i = 2; i <= k; i++){
        for(j = 1; j <= nr; j++){
            s[i][j] = (s[i][j - 1] + s[i - 1][ u[j] ] * 1LL * (v[j] - v[j - 1]) ) % mod;
        }
    }
    cout<< s[k][nr];
}

```