#include <stdio.h>

int main() {
    int N;

    // 使用無窮迴圈來持續讀取輸入，直到遇到終止條件
    while (1) {
        // 讀取 N 的值
        scanf("%d", &N);

        // 若 N 等於 0，則結束迴圈
        if (N == 0)
            break;

        // 初始化 G 的值，G 用來存放所有 GCD 值的總和
        long long G = 0;

        int i, j, a, b, temp;

        // 外層迴圈，從 i=1 到 i=N-1，依序遍歷每一個 i
        for (i = 1; i < N; i++) {
            // 內層迴圈，從 j=i+1 到 j=N，遍歷每一個 j，且 j > i
            for (j = i + 1; j <= N; j++) {
                // 將 i 和 j 的值賦予變數 a 和 b，準備計算 GCD
                a = i;
                b = j;

                // 使用輾轉相除法 (歐幾里得算法) 計算 GCD
                while (b != 0) {
                    // 儲存 b 的值，以便下一步操作
                    temp = b;
                    // 計算 a 除以 b 的餘數，並賦值給 b
                    b = a % b;
                    // 將 b 的值賦值給 a，繼續下一次循環
                    a = temp;
                }

                // 最後 a 的值即為 GCD(i, j)，將其加到 G 中
                G = G + a;
            }
        }

        // 輸出 G 的值，代表對應 N 的總和 GCD(i, j)
        printf("%lld\n", G);
    }

    return 0; // 程式結束
}