#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
const int INF=1e9;
const ll LINF=1e18;

int main(){
    ll n,k;
    cin>>n>>k;
    vector<pair<ll,ll>> p;
    for(ll i=1;i*i<=n;i++){
        ll l=n/(i+1);
        ll r=n/i;
        p.push_back({i,1});
        if(i<=l)p.push_back({r,r-l});
    }
    sort(p.begin(),p.end());
    int sz=p.size();
    ll dp[2][sz+1];
    dp[0][0]=dp[1][0]=0;
    for(int i=0;i<sz;i++){
        dp[0][i+1]=p[i].second;
        dp[0][i+1]=(dp[0][i+1]+dp[0][i])%MOD;
    }
    for(int i=1;i<k;i++){
        for(int j=0;j<sz;j++){
            int it=lower_bound(p.begin(),p.end(),make_pair(n/p[j].first,-1LL))-p.begin();
            dp[i&1][j+1]=(dp[(i+1)&1][it+1]*p[j].second)%MOD;
            dp[i&1][j+1]=(dp[i&1][j+1]+dp[i&1][j])%MOD;
        }
    }
    cout<<dp[(k-1)&1][sz]<<endl;
}
### Prompt

Your task is to create 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;
typedef long long ll;
const int MOD=1e9+7;
const int INF=1e9;
const ll LINF=1e18;

int main(){
    ll n,k;
    cin>>n>>k;
    vector<pair<ll,ll>> p;
    for(ll i=1;i*i<=n;i++){
        ll l=n/(i+1);
        ll r=n/i;
        p.push_back({i,1});
        if(i<=l)p.push_back({r,r-l});
    }
    sort(p.begin(),p.end());
    int sz=p.size();
    ll dp[2][sz+1];
    dp[0][0]=dp[1][0]=0;
    for(int i=0;i<sz;i++){
        dp[0][i+1]=p[i].second;
        dp[0][i+1]=(dp[0][i+1]+dp[0][i])%MOD;
    }
    for(int i=1;i<k;i++){
        for(int j=0;j<sz;j++){
            int it=lower_bound(p.begin(),p.end(),make_pair(n/p[j].first,-1LL))-p.begin();
            dp[i&1][j+1]=(dp[(i+1)&1][it+1]*p[j].second)%MOD;
            dp[i&1][j+1]=(dp[i&1][j+1]+dp[i&1][j])%MOD;
        }
    }
    cout<<dp[(k-1)&1][sz]<<endl;
}
```