Problem:
Score : 300 points

Problem Statement

You are given an integer N.
Find the number of the positive divisors of N!, modulo 10^9+7.

Constraints

1≤N≤10^3

Input

The input is given from Standard Input in the following format:

N

Output

Print the number of the positive divisors of N!, modulo 10^9+7.

Sample Input 1

3

Sample Output 1

4

There are four divisors of 3! =6: 1, 2, 3 and 6. Thus, the output should be 4.

Sample Input 2

6

Sample Output 2

30

Sample Input 3

1000

Sample Output 3

972926972

Solution in Haskell (GHC 7.10.3) (judge verdict: Accepted)

import qualified Data.IntMap as Map
type Primes = Map.IntMap Integer

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

solve :: Integer -> Integer
solve n = a `mod` b
    where
        a = Map.fold (*) 1 ps'
        b = 10^(9::Integer)+7
        ps = primes $ product [1..n]
        ps' = Map.map (+1) ps

primes :: Integer -> Primes
primes 1 = Map.empty
primes n = Map.unionWith (+) p1 (primes n')
    where
        v = factor1 n
        p1 = Map.singleton (fromInteger v) 1
        n' = n `div` v

factor1 :: Integer -> Integer
factor1 n = head ks
    where ks = [x | x <- 2:[3,5..], n `mod` x == 0]