fun main(args: Array<String>) {
    val MOD = 1000000007L
    val (N, K) = listOfInt()
    var s = mutableListOf<Pair<Int, Int>>()
    for (i in 1..Math.sqrt(N.toDouble()).toInt()) {
        s.add(Pair(i, 0))
        s.add(Pair(N / i, 0))
    }
    s.sortBy { it.first }
    s = s.distinctBy { it.first }.toMutableList()
    for (i in 0 until s.count() - 1) {
        val l = N / s[i + 1].first
        val r = N / s[i].first
        s[i] = Pair(s[i].first, r - l)
    }
    s[s.count() - 1] = Pair(s[s.count() - 1].first, 1)
    val m = s.count()
    val map = mutableMapOf<Int, Int>()
    repeat(m) { map[s[it].first] = it }
    var dp = Array<LongArray>(K + 1) { LongArray(m, { 0 }) }
    dp[0][map[N]!!] = 1
    for (i in 0 until K) {
        for (j in m - 2 downTo 0) {
            dp[i][j] += dp[i][j + 1]
            dp[i][j] %= MOD
        }
        repeat(m) {
            val nj = map[N / s[it].first]!!
            dp[i + 1][it] += dp[i][nj] * s[it].second
            dp[i + 1][it] %= MOD
        }
    }
    var ans = 0L
    repeat(m) { ans += dp[K][it]; ans %= MOD }
    println(ans)
}

fun next() = readLine()!!
fun listOfString() = next().split(" ")
fun listOfInt() = listOfString().map { Integer.parseInt(it) }
