//扫描线做法
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define Max int(1e7)
bool com[Max+10];
ll primes, prime[Max/10+100];
ll ans[Max+100];
void solve()
{
primes = 0;
memset(com,false,sizeof(com));
com[0] = com[1] = true;
for (ll i = 2; i <= Max; ++i)
{
if (!com[i])
prime[++primes] = i;
for (ll j = 1; j <= primes && i*prime[j] <= Max; ++j)
{
com[i*prime[j]] = true;
if (!(i % prime[j]))
break;
}
}
}
int main() {
ll n;
solve();
scanf("%lld",&n);
ans[1]=0;
for(ll i=1;i<=primes&&prime[i]<=n;i++)
{
ans[n/prime[i]+1]-=1;//用来后面求每一个倍数里面有多少个数
ans[1]++;
}
ll num=0;
for(ll i=1;i<=n;i++)
{
ans[i]=ans[i]+ans[i-1];
num+=1ll*ans[i]*(ans[i]-1)/2;
}
printf("%lld\n",2*num);
return 0;
}