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 Kotlin (1.0.0) (judge verdict: Accepted)

fun main(args: Array<String>) {
    val N = readLine()!!.toInt()
    val map = hashMapOf<Int, Long>()
    val mod = 1000000007L

    (1..N).forEach {
        val div = divisors(it)
        div.entries.forEach {
            map[it.key] = (map.getOrElse(it.key, { 0 }) + it.value) % mod
        }
    }


    var ans = 1L
    map.entries.forEach {
        ans = (ans * (it.value + 1)) % mod
    }
    println(ans % mod)
}



fun divisors(n: Int) : Map<Int, Int> {
    val map = hashMapOf<Int, Int>()

    var num = n
    for (i in 2 .. Math.sqrt(n.toDouble()).toInt()) {
        while (num % i == 0) {
            num /= i
            map[i] = map.getOrElse(i,  { 0 }) + 1
        }
    }

    if (num != 1) {
        map[num] = map.getOrElse(num, { 0 }) + 1
    }

    return map
}