Problem:
Score : 300 points

Problem Statement

Find \displaystyle{\sum_{a=1}^{K}\sum_{b=1}^{K}\sum_{c=1}^{K} \gcd(a,b,c)}.

Here \gcd(a,b,c) denotes the greatest common divisor of a, b, and c.

Constraints

1 \leq K \leq 200

K is an integer.

Input

Input is given from Standard Input in the following format:

K

Output

Print the value of \displaystyle{\sum_{a=1}^{K}\sum_{b=1}^{K}\sum_{c=1}^{K} \gcd(a,b,c)}.

Sample Input 1

2

Sample Output 1

9

\gcd(1,1,1)+\gcd(1,1,2)+\gcd(1,2,1)+\gcd(1,2,2)
+\gcd(2,1,1)+\gcd(2,1,2)+\gcd(2,2,1)+\gcd(2,2,2)
=1+1+1+1+1+1+1+2=9

Thus, the answer is 9.

Sample Input 2

200

Sample Output 2

10813692

Solution in C# (.NET Core 3.1.201) (judge verdict: Accepted)

using System;

namespace B
{
    class Program
    {
        static void Main(string[] args)
        {
            string line = Console.ReadLine();
            int K = int.Parse(line);
            int sum = 0;
            for(int i = 1; i <= K; i++)
            {
                for(int j = i; j <= K; j++)
                {
                    for (int k = j; k <= K;k++)
                    {
                        if (i == j && j == k)
                        {
                            sum += gcd(i, j, k);
                        }
                        else if (i == j || j == k)
                        {
                            sum += gcd(i, j, k) * 3;
                        }
                        else
                        {
                            sum += gcd(i, j, k) * 6;
                        }
                    }
                }
            }
            // 200 -> 10813692
            Console.WriteLine(sum);
        }

        public static int gcd(int a, int b, int c)
        {
            int max = a;
            if (max > b) max = b;
            if (max > c) max = c;
            for(int i = max; i > 1; i--)
            {
                if (a % i == 0
                    && b % i == 0
                    && c % i == 0)
                {
                    return i;
                }
            }
            return 1;
        }
    }
}