import javax.swing.DefaultBoundedRangeModel

import scala.annotation.tailrec
import scala.collection.mutable

object Main extends App {
  import scala.io.StdIn._
  val MOD = 1000000007L
  val Array(n, k) = readLine.trim.split(' ').map(_.toInt)
  val sqrt = math.sqrt(n).toInt
  val memo = Array.fill(k){Array.fill(sqrt + 1){-1L}}
  val invMemo = Array.fill(k){Array.fill(sqrt + 1){-1L}}
  for (i <- 1 until k) {
    for (j <- 1 to sqrt) solve(i, j, false)
    for (j <- 0 until sqrt) solve(i, sqrt - j, true)
  }
  println(solve(k - 1, 1, true))
  def solve(pos: Int, value: Int, inverse: Boolean = false): Long = {
    if (pos == 0 && !inverse) value
    else if (pos == 0) n / value
    else if (!inverse && memo(pos)(value) >= 0) memo(pos)(value)
    else if (inverse && invMemo(pos)(value) >= 0) invMemo(pos)(value)
    else if (inverse) {
      var result = count(value) * solve(pos - 1, value, false) % MOD
      result += (if (value == sqrt) solve(pos, sqrt, false) else solve(pos, value + 1, true))
      invMemo(pos)(value) = result % MOD
      result % MOD
    }else {
      var result = solve(pos - 1, value, true) % MOD
      result += (if (value == 1) 0 else solve(pos, value - 1, false))
      memo(pos)(value) = result % MOD
      result % MOD
    }
  }
  def count(value: Int): Int = {
    if (n / (value + 1) <= sqrt) n / value - sqrt
    else n / value - n / (value + 1)
  }
}