#include <bits/stdc++.h>
#include <numeric>
// #include <atcoder/modint>
using namespace std;
// using namespace atcoder;

// using mint = long double;
// using mint = modint998244353;
// using mint = modint1000000007;

typedef long long ll;
typedef pair<ll, ll> P;
typedef pair<P, ll> T;
typedef pair<ll, vector<ll> > Pd;

const ll INF = 1e18;
const ll fact_table = 32008;

priority_queue <ll> pql;
priority_queue <P> pqp;
//big priority queue
// priority_queue <ll, vector<ll>, greater<ll> > pqls;
priority_queue <P, vector<P>, greater<P> > pqps;
//small priority queue
//top pop

ll dx[8] = {1, 0, -1, 0, 1, 1, -1, -1};
ll dy[8] = {0, 1, 0, -1, -1, 1, 1, -1};
//↓,→,↑,←

/*
#define endl "\n"
#ifdef ENJAPMA
#undef endl
#endif
*/

#define p(x) cout<<x<<endl;
#define el cout<<endl;
#define pe(x) cout<<x<<" ";
#define ps(x) cout<<fixed<<setprecision(25)<<x<<endl;
#define pu(x) cout<<(x);
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define pc(x) cout << x << ",";
#define rep(i, n) for (ll i = 0; i < (n); i ++)
#define rep2(i, a, b) for (ll i = a; i <= (b); i++)
#define rep3(i, a, b) for (ll i = a; i >= (b); i--)
#define all(c) begin(c), end(c)

typedef vector<ll> vec;
typedef vector<vector<ll>> mat;

// vec v(n) -> 長さnのベクトルを宣言
// mat dp(h, vec(w)) -> h * w の行列を宣言

const ll mod = 998244353ll;
// const ll mod = 1000000007ll;

ll mypow(ll a, ll b, ll m = mod) {ll x = 1; while (b) {while (!(b & 1)) {(a *= a) %= m; b >>= 1;}(x *= a) %= m; b--;} return x;}
vec rv(ll read) { vec res(read); for (int i = 0; i < read; i++) { cin >> res[i]; } return res;}
void YES(bool cond) { if (cond) { p("YES");} else { p("NO");} return;}
void Yes(bool cond) { if (cond) { p("Yes");} else { p("No");} return;}
void line() { p("--------------------"); return;}

/*
ll fact[fact_table + 5], rfact[fact_table + 5];

void c3_init() {
    fact[0] = rfact[0] = 1;
    for (ll i = 1; i <= fact_table; i++) {
        fact[i] = (fact[i - 1] * i) % mod;
    }
    rfact[fact_table] = mypow(fact[fact_table], mod - 2, mod);
    for (ll i = fact_table; i >= 1; i--) {
        rfact[i - 1] = rfact[i] * i;
        rfact[i - 1] %= mod;
    }
    return;
}
ll c3(ll n, ll r) {
    return (((fact[n] * rfact[r]) % mod ) * rfact[n - r]) % mod;
}
*/

bool icpc = false;
bool multicase = false;

ll n, m;
ll table[200005];

bool solve() {
    ll k;
    cin >> k;
    for (ll i = 1; i <= 200000; i++) {
        ll cnt = 0;
        for (ll j = 1; j * j <= i; j++) {
            if (i % j == 0) {
                cnt ++;
                if (j * j < i) cnt ++;
            }
        }
        table[i] = table[i - 1] + cnt;
    }
    ll ans = 0;
    for (int i = 1; i <= k; i++) {
        ll r = k / i;
        ans += table[r];
    }
    p(ans);
    return true;
}

int main() {

    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    if (icpc) {
        while (solve());
        return 0;
    }
    ll q, testcase = 1;
    if (multicase) {
        cin >> q;
    } else {
        q = 1;
    }
    while (q--) {
        // pu("Case ");pu("#");pu(testcase);pu(": ");
        solve();
        testcase++;
    }

// solve();
    return 0;
}
#include <bits/stdc++.h>
#define li long int
#define lli long long 
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define si size()
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define lb lower_bound
#define ub upper_bound
#define BS binary_search
#define pll pair < lli, lli >
#define pii pair < int, int>
#define vi vector < int >
#define vvi vector < vector < int > >
#define vlli vector < lli >
#define all(x) x.begin(), x.end()
#define vvlli vector < vector < lli > >
#define vp vector < pll >
#define vvp vector< vector< pll> >
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 
#define ordered_set tree<lli  , null_type, less<lli>, rb_tree_tag,tree_order_statistics_node_update>
#define fill(a,n) for(lli iiii=0;iiii<n;iiii++)	cin>>a[iiii];
#define mpii map<int, int>
# define precision(x) cout << fixed << setprecision(x)
#define REP(i, a, b) for (int i=a; i<=b; i++)
using namespace __gnu_pbds;
lli mod=1e9+7;
using namespace std;  

#define MAXN 200001 
lli spf[MAXN]; 

void sieve() 
{ 
	spf[1] = 1; 
	for (lli i=2; i<MAXN; i++) 		spf[i] = i; 
	
	for (int i=4; i<MAXN; i+=2)		spf[i] = 2; 

	for (int i=3; i*i<MAXN; i++) 
	{ 
		if (spf[i] == i) 
		{ 
			for (int j=i*i; j<MAXN; j+=i) 
				if (spf[j]==j) 
					spf[j] = i; 
		} 
	} 
} 

vector<lli> getFactorization(lli x) 
{ 
	vlli ret; 
	while (x != 1) 
	{ 
		ret.push_back(spf[x]); 
		x = x / spf[x]; 
	} 
	return ret; 
} 



int main()
{
	//vlli p = getFactorization(x); 
    fastio;
	sieve();
	lli k,i;	
	cin>>k;
	vlli dp(k+1,-1);	dp[1]=1;
	for(i=2;i<=k;i++)
	{
		//x+y+x=k;	k+2 C 2 = ((k+2)*(k+1))/2;
		vlli p = getFactorization(i);
		set<lli> VAL;
		for(auto ii:p)	VAL.insert(ii);
		vlli val; lli sz=VAL.si;
		for(auto ii:VAL)	val.pb(ii);
		vlli f(sz,0);
		for(auto ii:p)
		{
			lli ind=lb(all(val),ii)	- val.begin();
			f[ind]++;
		}
		dp[i]=1;
		for(auto ii:f)	dp[i]=dp[i]*(((ii+2)*(ii+1))/2);
	}
	//for(i=1;i<=10;i++)	cout<<"dp["<<i<<"]="<<dp[i]<<"\n";
	lli ans=0;
	for(i=1;i<=k;i++)	ans+=dp[i];
	//cout<<"ans= ";
	cout<<ans<<"\n";
}