#include <bits/stdc++.h>

using namespace std;
const int MOD = 1000000007;

typedef long long Int;

Int dp[101][100000];
Int w[100000];

int main()
{
  int n, k;
  scanf("%d %d", &n, &k);
  
  vector<int> cands;
  for (int i = 1; i * i <= n; i++) {
    cands.push_back(i);
    if (i * i != n) cands.push_back(n / i);
  }
  sort(cands.begin(), cands.end());
  int m = cands.size();
  
  w[0] = 1;
  dp[0][0] = 1;
  for (int i = 1; i < m; i++) {
    w[i] = cands[i] - cands[i - 1];
    dp[0][i] = 1;
  }
  
  for (int i = 1; i <= k; i++) {
    for (int j = 0; j < m; j++) {
      int p = m - j - 1;
      dp[i][j] = dp[i - 1][p] * w[j] % MOD;
      if (j) dp[i][j] = (dp[i][j] + dp[i][j - 1]) % MOD;
    }
  }
  
  printf("%lld\n", dp[k][m - 1]);
  
  return 0;
}
### Prompt

Generate 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;
const int MOD = 1000000007;

typedef long long Int;

Int dp[101][100000];
Int w[100000];

int main()
{
  int n, k;
  scanf("%d %d", &n, &k);
  
  vector<int> cands;
  for (int i = 1; i * i <= n; i++) {
    cands.push_back(i);
    if (i * i != n) cands.push_back(n / i);
  }
  sort(cands.begin(), cands.end());
  int m = cands.size();
  
  w[0] = 1;
  dp[0][0] = 1;
  for (int i = 1; i < m; i++) {
    w[i] = cands[i] - cands[i - 1];
    dp[0][i] = 1;
  }
  
  for (int i = 1; i <= k; i++) {
    for (int j = 0; j < m; j++) {
      int p = m - j - 1;
      dp[i][j] = dp[i - 1][p] * w[j] % MOD;
      if (j) dp[i][j] = (dp[i][j] + dp[i][j - 1]) % MOD;
    }
  }
  
  printf("%lld\n", dp[k][m - 1]);
  
  return 0;
}
```