#include<bits/stdc++.h>
using namespace std;

int main()
{
  int n, k;
  cin >> n >> k;
  int i, j;
  int p = (int)sqrt(n);
  vector<vector<long long>> dp(k+1, vector<long long>(2*p+10, 0));
  for(i = 1; i <= p; i++)dp.at(2).at(i) = n/i;
  for(i = p+1; i <= p+n/(p+1); i++)
  {
    int l = p+1+n/(p+1)-i;
    dp.at(2).at(i) = l*(n/l-n/(l+1));
  }
  long long ans = 0;
  for(i = 2; i <= k-1; i++)
  {
    vector<long long> sum(2*p+10, dp.at(i).at(1));
    for(j = 2; j <= p+n/(p+1); j++)sum.at(j) = (sum.at(j-1)+dp.at(i).at(j))%1000000007;
    for(j = 1; j <= p; j++)
    {
       int l = p+1+n/(p+1)-j;
       dp.at(i+1).at(j) = sum.at(l);
    }
    for(j = p+1; j <= p+n/(p+1); j++)
    {
      int l = p+1+n/(p+1)-j;
      dp.at(i+1).at(j) = sum.at(l)*(n/l-n/(l+1))%1000000007;
    }
  }
  for(i = 1; i <= p+n/(p+1); i++)ans = (ans+dp.at(k).at(i))%1000000007;
  cout << ans << endl;
}
### Prompt

Create a solution in cpp for 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;

int main()
{
  int n, k;
  cin >> n >> k;
  int i, j;
  int p = (int)sqrt(n);
  vector<vector<long long>> dp(k+1, vector<long long>(2*p+10, 0));
  for(i = 1; i <= p; i++)dp.at(2).at(i) = n/i;
  for(i = p+1; i <= p+n/(p+1); i++)
  {
    int l = p+1+n/(p+1)-i;
    dp.at(2).at(i) = l*(n/l-n/(l+1));
  }
  long long ans = 0;
  for(i = 2; i <= k-1; i++)
  {
    vector<long long> sum(2*p+10, dp.at(i).at(1));
    for(j = 2; j <= p+n/(p+1); j++)sum.at(j) = (sum.at(j-1)+dp.at(i).at(j))%1000000007;
    for(j = 1; j <= p; j++)
    {
       int l = p+1+n/(p+1)-j;
       dp.at(i+1).at(j) = sum.at(l);
    }
    for(j = p+1; j <= p+n/(p+1); j++)
    {
      int l = p+1+n/(p+1)-j;
      dp.at(i+1).at(j) = sum.at(l)*(n/l-n/(l+1))%1000000007;
    }
  }
  for(i = 1; i <= p+n/(p+1); i++)ans = (ans+dp.at(k).at(i))%1000000007;
  cout << ans << endl;
}
```