main = do
  [n,k]<-map read.words<$>getLine
  print $ solve n k

solve n k = f (repFunc g (k-2) int) where
  int = dvrs n
  g ns = scanl1(+%)$zipWith (*%) dint (reverse ns)
  f ns = foldl1 (+%) $ zipWith (*%) dint (reverse ns)
  dint = zipWith subtract (0:int) int

repFunc f n = (!!n) . iterate f

dvrs n = [1..floor(sqrt$fromIntegral n)] ++ reverse ds
  where ds = [n`div`i|i<-[1..floor(sqrt$fromIntegral n)]]
mo = 10^9 + 7
a +% b = mod (a+b) mo
a *% b = mod (a*b) mo