#include "math.h"
#include <algorithm>
#include <complex>
#include <cstdio>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <vector>
#define ifor(i, a, b) for (int i = (a); i < (b); i++)
#define rfor(i, a, b) for (int i = (b)-1; i >= (a); i--)
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rrep(i, n) for (int i = (n)-1; i >= 0; i--)
using namespace std;
typedef long double ld;
typedef long long int lli;
typedef complex<double> P;
const double eps = 1e-11;
int vex[4] = {1, 0, -1, 0};
int vey[4] = {0, 1, 0, -1};
typedef vector<double> Vec;
typedef vector<int> vec;
typedef vector<Vec> MAT;
typedef vector<vec> mat;
lli MOD = 1000000007;
#define MAX 200005
//Ax=bをとくAは正方行列
lli powm(lli a, lli p, lli mod)
{
    lli ans = 1;
    while (p > 0) {
        if (p & 1)
            ans = (ans * a) % mod;
        a = (a * a) % mod;
        p >>= 1;
    }
    return ans % mod;
}
lli inv(lli a)
{
    return powm(a, MOD - 2, MOD);
}
lli gcd(lli A, lli B)
{
    if (B > A)
        swap(A, B);
    if (A % B == 0)
        return B;
    else
        return gcd(B, A % B);
}
mat mul_mat_mod(mat A, mat B, lli m)
{
    int n = A.size();
    mat C(n, vec(n));
    rep(i, n) rep(j, n) rep(k, n)
    {
        C[i][j] += A[i][k] * B[k][j] % m;
        C[i][j] %= m;
    }
    return C;
}
mat pow_mat(mat A, lli p, lli mod)
{
    int n = A.size();
    mat B = mat(n, vec(n));
    while (p > 0) {
        if (p & 1) {
            B = mul_mat_mod(A, B, mod);
        }
        A = mul_mat_mod(A, A, mod);
        p >>= 1;
    }
    return B;
}
lli comb(lli a, lli b)
{
    lli ans = 1;
    rep(i, b)
    {
        ans = ans % MOD * (a - i) % MOD * inv(b - i) % MOD;
    }
    return ans;
}
/*c++11から使える
for (auto itr = data.begin(); itr != data.end(); ++itr) {
        ans = ans * (itr->second + 1) % MOD;
    }*/
map<lli, lli> prime_factor(lli m)
{
    map<lli, lli> data;
    int a = 2;
    while (m >= a * a) {
        if (m % a == 0) {
            data[a]++;
            m /= a;
        } else {
            if (a >= 3)
                a += 2;
            else
                a++;
        }
    }
    data[m]++;
    return data;
}
double func(map<lli, lli> data, lli m)
{
    double ans = 0;
    for (auto itr = data.begin(); itr != data.end(); ++itr) {
        ans += log((itr->second + 1));
    }
    return ans;
}
lli sum_of_yakusuu(lli N)
{
    lli ans = 0;
    lli cnt = 1;
    while (cnt * cnt <= N) {
        if (N % cnt == 0)
            ans += cnt + N / cnt;
        if (N == cnt * cnt) {
            ans -= cnt;
        }
        cnt++;
    }
    return ans;
}
lli geometric_sum(lli p, lli n)
{
    //return (powm(p, n + 1, MOD * 1000000000) - 1) / (p - 1);
    lli tmp = 1;
    lli ans = 0;
    rep(i, n + 1)
    {
        ans += tmp;
        tmp *= p;
    }
    return ans;
}
lli factor[MAX], inv_factor[MAX];
bool filled = false;
lli inverse(lli i)
{
    return powm(i, MOD - 2, MOD);
}
void fillfactor()
{
    factor[1] = 1;
    inv_factor[1] = inverse(1);
    filled = true;
    for (int i = 2; i < MAX; i++) {
        factor[i] = factor[i - 1] * i % MOD;
        inv_factor[i] = inv_factor[i - 1] * inv(i) % MOD;
    }
}
lli combination(lli n, lli r)
{
    if (!filled)
        fillfactor();
    if (r == 0 || n == r)
        return 1;
    return factor[n] * inv_factor[r] % MOD * inv_factor[n - r] % MOD;
}
map<lli, lli> data;
set<lli> emurate_divisor(lli d)
{
    set<lli> ans;
    lli a = 2;
    ans.insert(d);
    if (d != 1)
        ans.insert(1);
    while (d >= a * a) {
        if (d % a == 0) {
            ans.insert(a);
            if (a * a != d)
                ans.insert(d / a);
        }
        a++;
    }
    return ans;
}
int main()
{
    int n;
    cin >> n;
    map<lli, lli> g;
    for (int i = 2; i <= n; i++) {
        map<lli, lli> f = prime_factor(i);
        for (auto s : f) {
            g[s.first] += s.second;
        }
    }
    lli ans = 1;
    for (auto s : g) {
        ans = (ans * (s.second + 1) % MOD);
    }
    cout << ans << endl;
}


Measured memory_bytes: 256