#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1.7e6+7;
ll prime[N];
bool vis[N];
ll mu[N];
ll phi[N];
long long asd = 0;
int cnt = 0;
unordered_map<int,ll> summu;
unordered_map<int,ll> sumphi;
void init()
{
vis[0] = vis[1] = 1;
mu[1] = phi[1] = 1;
for(int i = 2; i < N; i++)
{
if(!vis[i])
{
prime[cnt++] = i;
phi[i] = i-1;
}
for(int j = 0; j < cnt && i * prime[j] <= N; j++)
{
vis[i * prime[j]] = 1;
if(i % prime[j])
{
phi[i * prime[j]] = phi[i] * phi[prime[j]];
}
else
{
phi[i * prime[j]] = phi[i] * prime[j];
break;
}
}
}
for(int i = 1;i <= N; i++)
{
phi[i] += phi[i - 1];
}
}
int gsum(int x)
{
return x;
}
ll getsphi(int x)
{
if(x < N) return phi[x];
if(sumphi[x]) return sumphi[x];
ll ans = x * ((ll)x+1) / 2;
for(ll l = 2,r; l <= x; l = r+1)
{
r = x/(x/l);
ans -= (gsum(r) - gsum(l - 1)) * getsphi(x/l);
}
return sumphi[x] = ans/gsum(1);
}
int main()
{
init();
int n;
cin >> n;
for(int i = 1; i < cnt; i++)
asd += 2*getsphi(n/prime[i])-1;
cout << asd << endl;
return 0;
}