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

using LL = long long;
const LL M = 1e9 + 7;

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

  vector<LL> dp, num;
  for(auto i = 1; i * i <= N; ++i) dp.emplace_back(N / i), num.emplace_back(1);
  for(auto i = dp.size() - (dp.size()==dp.back()); 0 < i; --i) dp.emplace_back(i), num.emplace_back((dp[i - 1] - dp[i] + M) % M);

  N = num.size();
  dp = num;
  for(auto k = 1; k < K; ++k) {
    vector<LL> ss{0};
    for(auto i: dp) ss.emplace_back((ss.back() + i) % M);
    for(auto i = 0; i < N; ++i) dp[i] = (ss[N - i] * num[i]) % M;
  }

  LL res = 0;
  for(auto i = 0; i < N; ++i) (res += dp[i]) %= M;
  cout << res << 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;

using LL = long long;
const LL M = 1e9 + 7;

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

  vector<LL> dp, num;
  for(auto i = 1; i * i <= N; ++i) dp.emplace_back(N / i), num.emplace_back(1);
  for(auto i = dp.size() - (dp.size()==dp.back()); 0 < i; --i) dp.emplace_back(i), num.emplace_back((dp[i - 1] - dp[i] + M) % M);

  N = num.size();
  dp = num;
  for(auto k = 1; k < K; ++k) {
    vector<LL> ss{0};
    for(auto i: dp) ss.emplace_back((ss.back() + i) % M);
    for(auto i = 0; i < N; ++i) dp[i] = (ss[N - i] * num[i]) % M;
  }

  LL res = 0;
  for(auto i = 0; i < N; ++i) (res += dp[i]) %= M;
  cout << res << endl;
}

```