// Made by Daniel Diaz (@Danidiaztech)
#include <bits/stdc++.h>
using namespace std;
/*
Use with caution, may cause precision errors
with floats
*/
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
#pragma GCC target ("avx,tune=native")
#define ll long long
const int mod = 1e9 + 7;
const string yes = "YES", no = "NO";
const int N = 1e6;
int phi[N + 1];
ll dp[N + 1];
int main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
#if LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
for (int i = 0;i <= N; i++){
phi[i] = i;
}
for (int i = 2; i <= N; i++){
if (phi[i] == i){
for (int j = i; j <= N; j+=i){
phi[j] -= phi[j] / i;
}
}
// Compute dpi
dp[i] = dp[i - 1];
for (int d = 1; d * d <= i; d++){
if (i % d == 0){
dp[i] += phi[i / d] * d;
if (d * d != i && d != 1){
dp[i] += phi[d] * (i / d);
}
}
}
}
int n;
while (cin >> n){
if (n == 0) break;
cout << dp[n] << '\n';
}
}
Ly8gTWFkZSBieSBEYW5pZWwgRGlheiAoQERhbmlkaWF6dGVjaCkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovKgpVc2Ugd2l0aCBjYXV0aW9uLCBtYXkgY2F1c2UgcHJlY2lzaW9uIGVycm9ycwp3aXRoIGZsb2F0cwoqLwojcHJhZ21hIEdDQyBvcHRpbWl6ZSAoIk8zIikKI3ByYWdtYSBHQ0MgdGFyZ2V0ICgic3NlNCIpCiNwcmFnbWEgR0NDIHRhcmdldCAoImF2eCx0dW5lPW5hdGl2ZSIpCgojZGVmaW5lIGxsIGxvbmcgbG9uZwoKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IHN0cmluZyB5ZXMgPSAiWUVTIiwgbm8gPSAiTk8iOwoKY29uc3QgaW50IE4gPSAxZTY7CmludCBwaGlbTiArIDFdOwpsbCBkcFtOICsgMV07CgppbnQgbWFpbigpIHsKICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCiAgI2lmIExPQ0FMCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgI2VuZGlmCgogIGZvciAoaW50IGkgPSAwO2kgPD0gTjsgaSsrKXsKICAgIHBoaVtpXSA9IGk7CiAgfQoKICBmb3IgKGludCBpID0gMjsgaSA8PSBOOyBpKyspewogICAgaWYgKHBoaVtpXSA9PSBpKXsKICAgICAgZm9yIChpbnQgaiA9IGk7IGogPD0gTjsgais9aSl7CiAgICAgICAgcGhpW2pdIC09IHBoaVtqXSAvIGk7CiAgICAgIH0KICAgIH0KICAgIC8vIENvbXB1dGUgZHBpCiAgICBkcFtpXSA9IGRwW2kgLSAxXTsKICAgIAogICAgZm9yIChpbnQgZCA9IDE7IGQgKiBkIDw9IGk7IGQrKyl7CiAgICAgIGlmIChpICUgZCA9PSAwKXsKICAgICAgICBkcFtpXSArPSBwaGlbaSAvIGRdICogZDsKICAgICAgICBpZiAoZCAqIGQgIT0gaSAmJiBkICE9IDEpewogICAgICAgICAgZHBbaV0gKz0gcGhpW2RdICogKGkgLyBkKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CgogIGludCBuOyAKICB3aGlsZSAoY2luID4+IG4pewogICAgaWYgKG4gPT0gMCkgYnJlYWs7CiAgICBjb3V0IDw8IGRwW25dIDw8ICdcbic7CiAgfQoKfQo=