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 Kotlin (1.3.71) (judge verdict: Time Limit Exceeded)

import kotlin.math.min

fun main(args: Array<String>) {
    val input = readLine()!!.toLong()

    var result = 0L
    for (a in 1..input) {
        for (b in 1..input) {
            for (c in 1..input) {
                result += gcb(a, b, c)
            }
        }
    }
//    val result = (1..input).toList().asSequence().map { a ->
//        (1..input).toList().asSequence().map { b ->
//            (1..input).toList().asSequence().map { c -> gcb(a, b, c) }.sum()
//        }.sum()
//    }.sum()
    println(result)
}

fun gcb(a: Long, b: Long, c: Long): Long {
    val minValue = min(min(a, b), c)
    val result = (2L..minValue).toList().asSequence()
        .find {
            (a % it == 0L)
                    && (b % it == 0L)
                    && (c % it == 0L)
        }

    return if (result == null) {
        1L
    } else {
        result * gcb(a / result, b / result, c / result)
    }
}