#include <iostream>
#include <vector>

const int mod = 1000000007;

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

  std::vector<int> n_int;

  for(int i = 1; i <= N; i++){
    if(i*i > N) break;
    n_int.push_back(1);
  }
  int prev_max = n_int.size();
  for(int i = n_int.size(); i > 0; i--){
    int n = N/i-prev_max;
    if(n > 0) n_int.push_back(n);
    prev_max = N/i;
  }
  int nsize = n_int.size();

  long long int dp[2][nsize];

  dp[0][0] = n_int[0];
  for(int i = 1; i < nsize; i++){
    dp[0][i] = (dp[0][i-1]+n_int[i])%mod;
  }

  for(int k = 1; k < K; k++){
    int k2 = k%2;
    for(int i = 0; i < nsize; i++){
      dp[k2][i] = (n_int[i]*dp[1-k2][nsize-1-i])%mod;
      if(i > 0) dp[k2][i] = (dp[k2][i]+dp[k2][i-1])%mod;
    }
  }

  std::cout << dp[(K-1)%2][nsize-1] << std::endl;

  return 0;
}


### Prompt

Develop a solution in cpp to the problem described below:

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 <iostream>
#include <vector>

const int mod = 1000000007;

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

  std::vector<int> n_int;

  for(int i = 1; i <= N; i++){
    if(i*i > N) break;
    n_int.push_back(1);
  }
  int prev_max = n_int.size();
  for(int i = n_int.size(); i > 0; i--){
    int n = N/i-prev_max;
    if(n > 0) n_int.push_back(n);
    prev_max = N/i;
  }
  int nsize = n_int.size();

  long long int dp[2][nsize];

  dp[0][0] = n_int[0];
  for(int i = 1; i < nsize; i++){
    dp[0][i] = (dp[0][i-1]+n_int[i])%mod;
  }

  for(int k = 1; k < K; k++){
    int k2 = k%2;
    for(int i = 0; i < nsize; i++){
      dp[k2][i] = (n_int[i]*dp[1-k2][nsize-1-i])%mod;
      if(i > 0) dp[k2][i] = (dp[k2][i]+dp[k2][i-1])%mod;
    }
  }

  std::cout << dp[(K-1)%2][nsize-1] << std::endl;

  return 0;
}


```