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 = reverse $ scanl1(+%)$zipWith(*%) dint ns
  f ns = foldl1(+%)$zipWith(*%) dint ns
  dint = reverse $ zipWith subtract (tail int++[0]) int

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

dvrs n = ds ++ reverse [1..floor(sqrt$fromIntegral n)]
  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