/// Heil Hitler :P
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <new>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#define CLR(o) memset(o, 0x00, sizeof o)
#define CLR1(o) memset(o, -1, sizeof o)
#define MAX3(a, b, c) MAX(a , MAX(b,c))
#define MIN3(a, b, c) MIN(a , MIN(b,c))
#define takei(a) scanf("%d", &a)
#define takell(a) scanf("%lld", &a)
#define takellu(a) scanf("%llu", &a)
#define sf scanf
#define ssf sscanf
#define pb push_back
#define PPP system("pause")
#define ok cout << "OK" <<endl;
#define pf printf
#define PI 2*acos(0)
#define READ(a) freopen(a,"r",stdin);
#define WRITE(b) freopen(b, "w", stdout);
using namespace std;
template <class T> T MAX(T a, T b) { return a>b?a:b;}template <class T> T MIN(T a, T b) { return a<b?a:b;}
template <class T1> void deb(T1 p) { cout << "Debugging: " << p << endl;}
template <class T1, class T2> void deb(T1 p, T2 q) { cout << "Debugging: " << p << "\t" << q << endl;}
template <class T1, class T2, class T3> void deb(T1 p, T2 q, T3 r) { cout << "Debugging: " << p << "\t " << q << "\t " << r << endl;}
template <class T1, class T2, class T3, class T4> void deb(T1 p, T2 q, T3 r, T4 s) { cout << "Debugging: " << p << "\t " << q << "\t " << r << "\t " << s << endl;}
const int xx[] = {0, 0, 1, -1, -1, 1, -1, 1};const int yy[] = {1, -1, 0, 0, 1, 1, -1, -1}; const int kx[] = {-2, -1, 1, 2, 2, 1, -1, -2}; const int ky[] = {1, 2, 2, 1, -1, -2, -2, -1}; // KX-> Knight moovs xx-> diagonal -> 8 horizontal/vertical->4
#define SIZE 4000009
long long *phi;
void PHII()
{
phi = new long long[SIZE];
int i, j, k, l;
for(i=2; i<SIZE; i++)
phi[i] = i;
for(i=2; i<SIZE; i++)
if(phi[i]==i)
{
for(j=i; j<SIZE; j+=i)
phi[j] -= phi[j]/i;
}
//for(i=2; i<13; i++) deb(i, phi[i]);
}
int main()
{
// time_t t1=clock();
#ifndef ONLINE_JUDGE
READ("input.txt");
//WRITE("output.txt");
#endif
/// MAIN
PHII();
long long i, j, k, l, a, b, c, *p;
p = new long long[SIZE];
CLR(p);
for(i=2; i<4000001; i++)
{
p[i]+=phi[i]+p[i-1];
for(j=i*2, k=2; j<4000001; j+=i, k++)
{
p[j] += (i*phi[k]);
}
}
while(sf("%lld", &i)==1 &&i)
pf("%lld\n", p[i]);
delete(p);
delete(phi);
/* Coding is FUN */
/// ENDD
// time_t t2=clock();
// cout << " My time: " <<(t2-t1) << endl;;
return 0;
}
Ly8vIEhlaWwgSGl0bGVyIDpQCiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPG5ldz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNkZWZpbmUgQ0xSKG8pIG1lbXNldChvLCAweDAwLCBzaXplb2YgbykKI2RlZmluZSBDTFIxKG8pIG1lbXNldChvLCAtMSwgc2l6ZW9mIG8pCiNkZWZpbmUgTUFYMyhhLCBiLCBjKSBNQVgoYSAsIE1BWChiLGMpKQojZGVmaW5lIE1JTjMoYSwgYiwgYykgTUlOKGEgLCBNSU4oYixjKSkKI2RlZmluZSB0YWtlaShhKSBzY2FuZigiJWQiLCAmYSkKI2RlZmluZSB0YWtlbGwoYSkgc2NhbmYoIiVsbGQiLCAmYSkKI2RlZmluZSB0YWtlbGx1KGEpIHNjYW5mKCIlbGx1IiwgJmEpCiNkZWZpbmUgc2Ygc2NhbmYKI2RlZmluZSBzc2Ygc3NjYW5mCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUFBQIHN5c3RlbSgicGF1c2UiKQojZGVmaW5lIG9rIGNvdXQgPDwgIk9LIiA8PGVuZGw7CiNkZWZpbmUgcGYgcHJpbnRmCiNkZWZpbmUgUEkgMiphY29zKDApCiNkZWZpbmUgUkVBRChhKSBmcmVvcGVuKGEsInIiLHN0ZGluKTsKI2RlZmluZSBXUklURShiKSBmcmVvcGVuKGIsICJ3Iiwgc3Rkb3V0KTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDxjbGFzcyBUPiBUIE1BWChUIGEsIFQgYikgeyByZXR1cm4gYT5iP2E6Yjt9dGVtcGxhdGUgPGNsYXNzIFQ+IFQgTUlOKFQgYSwgVCBiKSB7IHJldHVybiBhPGI/YTpiO30KdGVtcGxhdGUgPGNsYXNzIFQxPiB2b2lkIGRlYihUMSBwKSB7IGNvdXQgPDwgIkRlYnVnZ2luZzogIiA8PCBwIDw8IGVuZGw7fQp0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPiB2b2lkIGRlYihUMSBwLCBUMiBxKSB7IGNvdXQgPDwgIkRlYnVnZ2luZzogIiA8PCBwIDw8ICJcdCIgPDwgcSAgPDwgZW5kbDt9CnRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPiB2b2lkIGRlYihUMSBwLCBUMiBxLCBUMyByKSB7IGNvdXQgPDwgIkRlYnVnZ2luZzogIiA8PCBwIDw8ICJcdCAiIDw8IHEgPDwgIlx0ICIgPDwgciA8PCBlbmRsO30KdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PiB2b2lkIGRlYihUMSBwLCBUMiBxLCBUMyByLCBUNCBzKSB7IGNvdXQgPDwgIkRlYnVnZ2luZzogIiA8PCBwIDw8ICJcdCAiIDw8IHEgPDwgIlx0ICIgPDwgciA8PCAiXHQgIiA8PCBzIDw8IGVuZGw7fQpjb25zdCBpbnQgeHhbXSA9IHswLCAwLCAxLCAtMSwgLTEsIDEsIC0xLCAxfTtjb25zdCBpbnQgeXlbXSA9IHsxLCAtMSwgMCwgMCwgMSwgMSwgLTEsIC0xfTsgY29uc3QgaW50IGt4W10gPSB7LTIsIC0xLCAxLCAyLCAyLCAxLCAtMSwgLTJ9OyBjb25zdCBpbnQga3lbXSA9IHsxLCAyLCAyLCAxLCAtMSwgLTIsIC0yLCAtMX07ICAgLy8gS1gtPiBLbmlnaHQgbW9vdnMgeHgtPiBkaWFnb25hbCAtPiA4IGhvcml6b250YWwvdmVydGljYWwtPjQKI2RlZmluZSBTSVpFIDQwMDAwMDkKbG9uZyBsb25nICpwaGk7Cgp2b2lkIFBISUkoKQp7CiAgICBwaGkgPSBuZXcgbG9uZyBsb25nW1NJWkVdOwogICAgaW50IGksIGosIGssIGw7CiAgICBmb3IoaT0yOyBpPFNJWkU7IGkrKykKICAgICAgICBwaGlbaV0gPSBpOwogICAgZm9yKGk9MjsgaTxTSVpFOyBpKyspCiAgICAgICAgaWYocGhpW2ldPT1pKQogICAgewogICAgICAgIGZvcihqPWk7IGo8U0laRTsgais9aSkKICAgICAgICAgICAgcGhpW2pdIC09IHBoaVtqXS9pOwogICAgfQogICAgLy9mb3IoaT0yOyBpPDEzOyBpKyspICAgICAgICBkZWIoaSwgcGhpW2ldKTsKfQoKaW50IG1haW4oKQp7CiAgICAvLyB0aW1lX3QgdDE9Y2xvY2soKTsKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIFJFQUQoImlucHV0LnR4dCIpOwogICAgLy9XUklURSgib3V0cHV0LnR4dCIpOwojZW5kaWYKICAgIC8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BSU4KICAgIFBISUkoKTsKICAgIGxvbmcgbG9uZyBpLCBqLCBrLCBsLCBhLCBiLCBjLCAqcDsKICAgIHAgPSBuZXcgbG9uZyBsb25nW1NJWkVdOwogICAgQ0xSKHApOwogICAgZm9yKGk9MjsgaTw0MDAwMDAxOyBpKyspCiAgICB7CiAgICAgICAgcFtpXSs9cGhpW2ldK3BbaS0xXTsKICAgICAgICBmb3Ioaj1pKjIsIGs9Mjsgajw0MDAwMDAxOyBqKz1pLCBrKyspCiAgICAgICAgewogICAgICAgICAgICBwW2pdICs9IChpKnBoaVtrXSk7CiAgICAgICAgfQogICAgfQogICAgd2hpbGUoc2YoIiVsbGQiLCAmaSk9PTEgJiZpKQogICAgICAgIHBmKCIlbGxkXG4iLCBwW2ldKTsKICAgICAgICBkZWxldGUocCk7CiAgICAgICAgZGVsZXRlKHBoaSk7CiAgICAvKiBDb2RpbmcgaXMgRlVOICAqLwogICAgLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5ERAogICAgLy8gdGltZV90IHQyPWNsb2NrKCk7CiAgICAvLyBjb3V0IDw8ICIgTXkgdGltZTogIiA8PCh0Mi10MSkgPDwgZW5kbDs7CiAgICByZXR1cm4gMDsKfQoK