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 Control.Monad
import Data.List
import qualified Data.IntMap as M

-- 素数生成(無限リスト)
pr=2:q
q=3:5:7:3#q
m#(a:b:x)=[n|n<-[a^2,a^2+2..b^2-2],gcd n m<2]++(m*b)#(b:x)

-- 素因数分解 -> 結果をData.IntMapに(素因数,その数)として蓄積
fac :: [Int]->M.IntMap Int->Int->M.IntMap Int
fac _ m 1 = m
fac pa@(p:pr) m n
    |n`mod`p==0=fac pa (M.insertWith(+)p 1 m) (n`div`p)
    |True      =fac pr m n

main=do
    n<-readLn::IO Int
    print.foldl (\a n->(a*(n+1))`mod`1000000007) 1.M.elems $ foldl (fac pr) M.empty [2..n]