#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
const ll MOD = 1e9+7;
const ll INF = 1e18;
#define rep(i,m,n) for(ll i = (m); i <= (n); i++)
#define zep(i,m,n) for(ll i = (m); i < (n); i++)
#define rrep(i,m,n) for(ll i = (m); i >= (n); i--)
#define print(x) cout << (x) << endl;
#define printa(x,m,n) for(ll i = (m); i <= n; i++){cout << (x[i]) << " ";} cout<<endl;

int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	
	ll n, k;
	cin >> n >> k;
	
	vector<P> v, iv;
	for(ll i = 1; i*i <= n; i++){
		v.push_back(P(i, 1));
		iv.push_back(P(n/i, n/i));
	}
	
	ll m = v.size();
	zep(i, 0, m-1){iv[i].second -= iv[i+1].second;}
	zep(i, 0, m){iv[m-1].second -= v[i].second;}
	
	ll dp[k][2*m];
	zep(i, 0, m){dp[0][i] = v[i].second;}
	zep(i, 0, m){dp[0][2*m-1-i] = iv[i].second;}
	m *= 2;

	zep(i, 1, k){
		ll sm = 0;
		zep(j, 0, m){
			sm += dp[i-1][j];
			sm %= MOD;
			dp[i][m-1-j] = sm;
		}
		
		zep(j, 0, m){
			dp[i][j] *= dp[0][j];
			dp[i][j] %= MOD;
		}
	}
	
	ll ans = 0;
	zep(j, 0, m){
		ans += dp[k-1][j];
		ans %= MOD;
	}
	print(ans)
	return 0;
}