module Main where
import Control.Monad
import Control.Applicative
import Data.Maybe
import Data.List
import qualified Text.Printf
import qualified Data.ByteString.Char8 as BC
import qualified Data.ByteString as BC

import Data.Array

------------------------------------------

main :: IO ()
main = do
  n <- readInt
  print $ solve n

solve n = foldr (\a b -> (a+1)*b `mod` 1000000007) 1 . elems $
            accumArray (+) 0 (2, 1000) [x | y <- [1..n], x <- factorize y]

factorize :: Int -> [(Int, Int)]
factorize 1 = []
factorize x = foo 2 0 x
  where foo d n x
          | x `mod` d == 0 = foo d (n+1) (x `div` d)
          | n /= 0         = (d, n) : foo (d+1) 0 x
          | x == 1         = []
          | otherwise      = foo (d+1) 0 x

------------------------------------------

{- Int input -}

parseInt :: BC.ByteString -> Int
parseInt = fst . fromJust . BC.readInt

parseInts :: BC.ByteString -> [Int]
parseInts = map parseInt <$> BC.words

readInt :: IO Int
readInt = parseInt <$> BC.getLine

readInts :: IO [Int]
readInts = parseInts <$> BC.getLine

{- Double Formatting -}

doubleFmt :: Double -> String
doubleFmt = Text.Printf.printf "%.12f"
