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 Rust (1.42.0) (judge verdict: Accepted)

#![allow(unused_imports)]

use proconio::{input, fastout};
use proconio::marker::*;

#[fastout]
fn main() {
    input! {
    n: usize,
    }
    let p = 1_000_000_007;
    let mut d = vec![1; 1005];
    for i in 2..=n {
        let ps = primes(i);
        for p in ps {
            d[p] += 1;
        }
    }
    let ans:usize = d.iter().fold(1 ,|acc, &x| acc * x % p);
    println!("{}", ans);
}

fn primes(m: usize) -> Vec<usize> {
    let mut l = Vec::new();
    let mut mm = m;
    for i in 2.. {
        if i * i > mm {break}
        while mm % i == 0 {
            l.push(i);
            mm /= i;
        }
    }
    if mm != 1 {l.push(mm)}
    l
}