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 Data.List

main = do
    n <- readLn
    let ps = takeWhile (<=n) primes
        fs = map (succ . (f n)) ps
    print $ foldl' (\a b -> (a * b) `mod` (10^9+7)) 1 fs

primes = 2 : 3 : [x | i <- [1..], j <- [-1, 1], let x = 6 * i + j, isPrime x]
    where isPrime n = null [i | i <- takeWhile (\x -> x * x <= n) primes, rem n i == 0]

f n p = sum . map (n `div`) . takeWhile (<= n) $ map (p^) [1..]