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 JavaScript (Node.js 12.16.1) (judge verdict: Wrong Answer)

// inputに入力データ全体が入る
function Main(input) {
  const RECORDS = [];
  const gcd = (a,b,c) => {
    if(RECORDS[`${a}${b}${c}`] ){
      return RECORDS[`${a}${b}${c}`];
    }

    // 最大公約数を求める
    const max = Math.max( a , Math.max( b, c));
    let ans = 0;

    for( let i = 1 ; i <= max ; i++ ){
      if( a % i === 0 && b % i === 0 && c % i === 0){
        ans = i;
      }
    }

    RECORDS[`${a}${b}${c}`] = ans;

    return ans ;
  };

  // 1行目がinput[0], 2行目がinput[1], …に入る
  inputs = input.split("\n");

  const K = Number(inputs[0]);

  let sum = 0 ;
  const tupples = [];
  for( let a = 1 ; a <= K ; a++ ){
    for( let b= 1 ; b <= K ; b++ ){
      for( let c= 1 ; c <= K ; c++ ){
        sum += gcd(...[a,b,c].sort((a,b)=> a -b ));
      }
    }
  }

  console.log(sum);
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));