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 Rust (1.42.0) (judge verdict: Accepted)

fn gcd(a: i64, b: i64, buf: &mut std::collections::HashMap<(i64, i64), i64>) -> i64 {
    if let Some(v) = buf.get(&(a, b)) {
        return *v;
    }
    let ret = if b == 0 { a } else { gcd(b, a % b, buf) };
    buf.insert((a, b), ret);
    ret
}

fn main() {
    proconio::input! {
        k: i64,
    }
    let mut buf = std::collections::HashMap::new();
    let mut sum = 0;
    for a in 1..=k {
        for b in 1..=k {
            for c in 1..=k {
                let ab = gcd(a, b, &mut buf);
                sum += gcd(ab, c, &mut buf);
            }
        }
    }
    println!("{}", sum);
}