#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i = 0; i < (int)n; i++)
using ll = long long;
const ll mod = 1e9+7;

int main(){
  ll n, k;
  cin >> n >> k;
  vector<ll> v;
  v.push_back(0);
  for(ll i = 1; i*i <= n; i++) {
    v.push_back(i);
    if(i != n/i) v.push_back(n/i);
  }
  sort(v.begin(),v.end());
  vector<ll> p(v.size(),0);
  for(int i = 1; i < v.size(); i++) {
    int s = upper_bound(v.begin(),v.end(),n/v[i]) - v.begin();
    p[i] = s-1;
  }
  vector<vector<ll>> dp(k+1,vector<ll>(v.size(),0));
  for(int i = 1; i < v.size(); i++) dp[0][i] = 1;
  rep(i,k) {
    for(int j = 1; j < v.size(); j++) {
      dp[i+1][j] = (dp[i][p[j]] * (v[j]-v[j-1]) + dp[i+1][j-1]) % mod;
    }
  }
  cout << dp[k][v.size()-1] << endl;
  return 0;
}
### Prompt

Your challenge is to write 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 rep(i,n) for(int i = 0; i < (int)n; i++)
using ll = long long;
const ll mod = 1e9+7;

int main(){
  ll n, k;
  cin >> n >> k;
  vector<ll> v;
  v.push_back(0);
  for(ll i = 1; i*i <= n; i++) {
    v.push_back(i);
    if(i != n/i) v.push_back(n/i);
  }
  sort(v.begin(),v.end());
  vector<ll> p(v.size(),0);
  for(int i = 1; i < v.size(); i++) {
    int s = upper_bound(v.begin(),v.end(),n/v[i]) - v.begin();
    p[i] = s-1;
  }
  vector<vector<ll>> dp(k+1,vector<ll>(v.size(),0));
  for(int i = 1; i < v.size(); i++) dp[0][i] = 1;
  rep(i,k) {
    for(int j = 1; j < v.size(); j++) {
      dp[i+1][j] = (dp[i][p[j]] * (v[j]-v[j-1]) + dp[i+1][j-1]) % mod;
    }
  }
  cout << dp[k][v.size()-1] << endl;
  return 0;
}
```