import Control.Monad( filterM)
import Data.List( nub)
primes = 2:f [3] [3,5..]
 where f (x:xs) ys =	let
			    (ps, qs) = span (< x*x) ys
			in
			    ps ++ f (xs++ps) [z | z<-qs, z`mod`x/=0]

rpf n = let ps = takeWhile ((<=n).(^2)) primes
	in  if n==1 then [1] else go n ps
    where
	go 1 _	= []
	go i []	= [i]
	go i pp@(p:ps) = case i`divMod`p of
			(d,0)	-> p:go d pp
			_	-> go i ps 

power = filterM (const [True,False])
divisors = map product . nub . power . rpf

runlen [] = []
runlen (x:xs) = rl x 1 xs
rl x k [] = [(x,k)]
rl x k (y:ys)
  | x==y	= rl x (k+1) ys
  | otherwise	= (x,k) : rl y 1 ys
comb' [] _ = []
comb' [x] y = if x>=y then [[y]] else []
comb' (x:xs) y = [h:t | h<-reverse [0..min x y], t<- comb' xs (y-h)]

comb list n =	let
		    xs = runlen list
		    xs' = map fst xs
		in
    [concat (zipWith replicate y xs') | y <- comb' (map snd xs) n]

main = do
    n_ <- readLn::IO Integer
    let
	pro = product [n_,n_-1..1]
    print $ if n_==1
	     then 1
	     else (length $ divisors pro) `mod` 1000000007