#include<bits/stdc++.h>
using namespace std;
#define int long long 
//けんちょん写経


const int MOD = 1e9+7;
int num[1100000];
int dp[110][1100000];
int sum[1100000];

signed main(void){ 
  
  int N,K; cin >> N >> K;
  
  int m = 0;
  for(int i = 1; i <= N; ){ 
    int j = N/i; 
    if( i <= j ){ num[m] = 1; i++; m++;}
    else{ num[m] = (N/j-i+1)%MOD; i = N/j+1; m++;} 
  }
  
  //ここまでおk
  dp[0][0] = 1;
  
  for(int i = 0; i < K; i++){  
    memset(sum,0,sizeof(sum));
    for(int l = 0; l <= m; l++){ sum[l+1] = (sum[l]+dp[i][l])%MOD;}
    for(int j = 0; j < m; j++){ 
      dp[i+1][j] = (sum[m-j]*num[j])%MOD;
    }
  }
  
  int ans = 0;
  
  for(int i = 0; i <= m; i++){ ans += dp[K][i]; ans %= MOD;}
  
  cout << ans << endl;
  
  return 0;
} 
    
  
  
### Prompt

Your challenge is to write 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;
#define int long long 
//けんちょん写経


const int MOD = 1e9+7;
int num[1100000];
int dp[110][1100000];
int sum[1100000];

signed main(void){ 
  
  int N,K; cin >> N >> K;
  
  int m = 0;
  for(int i = 1; i <= N; ){ 
    int j = N/i; 
    if( i <= j ){ num[m] = 1; i++; m++;}
    else{ num[m] = (N/j-i+1)%MOD; i = N/j+1; m++;} 
  }
  
  //ここまでおk
  dp[0][0] = 1;
  
  for(int i = 0; i < K; i++){  
    memset(sum,0,sizeof(sum));
    for(int l = 0; l <= m; l++){ sum[l+1] = (sum[l]+dp[i][l])%MOD;}
    for(int j = 0; j < m; j++){ 
      dp[i+1][j] = (sum[m-j]*num[j])%MOD;
    }
  }
  
  int ans = 0;
  
  for(int i = 0; i <= m; i++){ ans += dp[K][i]; ans %= MOD;}
  
  cout << ans << endl;
  
  return 0;
} 
    
  
  
```