import java.util.*
import kotlin.math.max
import kotlin.math.min

fun main() {
    val k = readInt()

    var ans = 0L
    for (a in 1..k) {
        for (b in 1..k) {
            for (c in 1..k) {
                ans += gcd(gcd(a, b), c)
            }
        }
    }
    println(ans)
}

fun readString() = readLine()!!
fun readInt() = readLine()!!.toInt()
fun readLong() = readLine()!!.toLong()
fun readIntList() = readLine()!!.split(" ").map(String::toInt)
fun readLongList() = readLine()!!.split(" ").map(String::toLong)
fun <T> Array<Array<T>>.print() {
    this.forEach {
        println(it.joinToString(" "))
    }
}

fun gcd(p: Int, q: Int): Int {
    if (p % q == 0) return q
    return gcd(q, p % q)
}

fun gcd(list: List<Int>): Int {
    val stack = Stack<Int>()
    list.forEach { stack.push(it) }

    while (stack.size > 1) {
        val (a, b) = (0..1).map { stack.pop() }
        val push = stack.push(min(a, b))
        val r = max(a, b) % min(a, b)
        if (r > 0) stack.push(r)
    }
    return stack.pop()
}