#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e7 + 10;
long long m[MAXN];
vector<int> ps;
bool ic[MAXN];
long long mp[MAXN];
void sv(int n) {
fill(ic, ic + n + 1, 0);
m[1] = 1;
for (int i = 2; i <= n; ++i) {
if (!ic[i]) ps.push_back(i), m[i] = -1;
for (int q : ps) {
int j = i * q;
if (j > n) break;
ic[j] = 1;
if (i % q == 0) { m[j] = 0; break; }
else m[j] = m[i] * m[q];
}
}
}
long long cal(int k) {
long long s = 0;
for (int l = 1, r, v; l <= k; l = r + 1) {
v = k / l, r = k / v;
s += 1LL * v * v * (mp[r] - mp[l-1]);
}
return s;
}
int main() {
freopen("gcd_prime.in","r",stdin);
freopen("gcd_prime.out","w",stdout);
int N; cin >> N; sv(N);
for (int i = 1; i <= N; ++i) mp[i] = mp[i-1] + m[i];
long long ans = 0;
for (int p : ps) if (p <= N) ans += cal(N/p);
cout << ans;
}