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
import System.Environment (getArgs)

-- http://tnomura9.exblog.jp/12332000/
factors :: Integer -> [Integer]
factors n = [x | x <- [1..n], n `mod` x == 0]

factorization :: Integer -> [Integer]
factorization 1 = []
factorization x = v : factorization (x `div` v)
  where v = (factors x) !! 1

primeList 2 = [2]
primeList n = (factorization n) ++ (primeList (n - 1))

answer 1 = 1
answer n = foldr f 1 $ map g $ groupBy (==) $ sort $ primeList n
  where f x p = (x * p) `rem` 1000000007
        g l = (fromIntegral 1) + (fromIntegral (length l))

main = do
  n <- readLn
  print $ answer (n :: Integer)