for (int p = 2; p * p <= n; p++)
{
if (n % p == 0)
{
int s = 0;
while (n % p == 0)
{
s++;
n /= p;
}
ps.push_back({p, s});
}
}
if(n > 1) ps.push_back({n, 1});
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef long long LL;
typedef pair<int, int> PII;
vector<PII> ps;
const int mod = 1e9+7;
const int N = 1e6+10;
int primes[N], cnt;
bool st[N];
void get_primes(int n)
{
for(int i = 2; i <= n; i++)
{
if(!st[i]) primes[++cnt] = i;
for(int j = 1; primes[j] * i <= n; j++)
{
st[primes[j] * i] = true;
if(i % primes[j] == 0) break;
}
}
}
int main()
{
int n;
cin >> n;
get_primes(n);
for(int i = 1; i <= cnt; i++)
{
int p = primes[i];
LL s = 0;
int t = n;
while(t)
{
s = s + t / p;
t /= p;
}
ps.push_back({p, s});
}
LL ans = 1;
for(auto c : ps)
{
int p = c.x, s = c.y;
ans = (ans * (s+1)) % mod;
}
cout << ans % mod;
return 0;
}