#include <bits/stdc++.h>

using namespace std;

const int mod = (int) 1e9 + 7;

int main() {
  int N, K;
  cin >> N >> K;

  vector<pair<int,int>> seg; // start, len
  for (int i = 1; i * i <= N; i++) {
    int l = N / (i + 1) + 1;
    int r = N / i;
    if ((long long) l * l > N) {
      seg.emplace_back(l, r - l + 1);
    }
    seg.emplace_back(i, 1);
  }
  sort(seg.begin(), seg.end());

  int n = seg.size();
  vector<int> dp(n);
  for (int i = 0; i < n; i++) {
    dp[i] = seg[i].second;
    // cerr << seg[i].first << ' ' << seg[i].second << endl;
  }

  for (int t = 0; t < K - 1; t++) {
    vector<int> sum(n + 1);
    for (int i = 0; i < n; i++) {
      sum[i + 1] = (sum[i] + dp[i]) % mod;
    }
    for (int i = 0; i < n; i++) {
      dp[i] = (long long) sum[n - i] * seg[i].second % mod;
    }
  }

  int ans = 0;
  for (int i = 0; i < n; i++) {
    ans = (ans + dp[i]) % mod;
  }
  cout << ans << endl;
  
  return 0;
}


### 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;

const int mod = (int) 1e9 + 7;

int main() {
  int N, K;
  cin >> N >> K;

  vector<pair<int,int>> seg; // start, len
  for (int i = 1; i * i <= N; i++) {
    int l = N / (i + 1) + 1;
    int r = N / i;
    if ((long long) l * l > N) {
      seg.emplace_back(l, r - l + 1);
    }
    seg.emplace_back(i, 1);
  }
  sort(seg.begin(), seg.end());

  int n = seg.size();
  vector<int> dp(n);
  for (int i = 0; i < n; i++) {
    dp[i] = seg[i].second;
    // cerr << seg[i].first << ' ' << seg[i].second << endl;
  }

  for (int t = 0; t < K - 1; t++) {
    vector<int> sum(n + 1);
    for (int i = 0; i < n; i++) {
      sum[i + 1] = (sum[i] + dp[i]) % mod;
    }
    for (int i = 0; i < n; i++) {
      dp[i] = (long long) sum[n - i] * seg[i].second % mod;
    }
  }

  int ans = 0;
  for (int i = 0; i < n; i++) {
    ans = (ans + dp[i]) % mod;
  }
  cout << ans << endl;
  
  return 0;
}


```