
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    static int[][] memo;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int K = scanner.nextInt();
        memo = new int[K + 1][K + 1];

        int sum = 0;
        for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        }
        System.out.println(sum);
    }

    public static int gcd(int a, int b) {
//        System.out.printf("%7d %7d%n", a, b);
        if (memo[a][b] > 0) return memo[a][b];
        if (b == 0) return a;
        return gcd(b, a % b);
    }
} import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util public class Main {
    static int[][] memo;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int K = scanner.nextInt();
        memo = new int[K + 1][K + 1];

        int sum = 0;
        for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        }
        System.out.println(sum);
    }

    public static int gcd(int a, int b) {
//        System.out.printf("%7d %7d%n", a, b);
        if (memo[a][b] > 0) return memo[a][b];
        if (b == 0) return a;
        return gcd(b, a % b);
    }
} Main static int[][] memo; memo public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int K = scanner.nextInt();
        memo = new int[K + 1][K + 1];

        int sum = 0;
        for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        }
        System.out.println(sum);
    } main {
        Scanner scanner = new Scanner(System.in);

        int K = scanner.nextInt();
        memo = new int[K + 1][K + 1];

        int sum = 0;
        for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        }
        System.out.println(sum);
    } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) int K = scanner.nextInt(); K scanner.nextInt() scanner.nextInt scanner memo = new int[K + 1][K + 1] memo new int[K + 1][K + 1] K + 1 K 1 K + 1 K 1 int sum = 0; sum 0 for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        } int i = 1 ; int i = 1 ; i 1 i <= K i K i++ i++ i {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        } {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        } for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            } int j = 1 ; int j = 1 ; j 1 j <= K j K j++ j++ j {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            } {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            } for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                } int k = 1 ; int k = 1 ; k 1 k <= K k K k++ k++ k {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                } {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                } int[] target = {i, j, k}; target {i, j, k} i j k Arrays.sort(target) Arrays.sort Arrays target sum += gcd(target[2], gcd(target[1], target[0])) sum gcd(target[2], gcd(target[1], target[0])) gcd target[2] target 2 gcd(target[1], target[0]) gcd target[1] target 1 target[0] target 0 System.out.println(sum) System.out.println System.out System System.out sum String[] args args public static int gcd(int a, int b) {
//        System.out.printf("%7d %7d%n", a, b);
        if (memo[a][b] > 0) return memo[a][b];
        if (b == 0) return a;
        return gcd(b, a % b);
    } gcd {
//        System.out.printf("%7d %7d%n", a, b);
        if (memo[a][b] > 0) return memo[a][b];
        if (b == 0) return a;
        return gcd(b, a % b);
    } if (memo[a][b] > 0) return memo[a][b]; memo[a][b] > 0 memo[a][b] memo[a] memo a b 0 return memo[a][b]; memo[a][b] memo[a] memo a b if (b == 0) return a; b == 0 b 0 return a; a return gcd(b, a % b); gcd(b, a % b) gcd b a % b a b int a a int b b public class Main {
    static int[][] memo;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int K = scanner.nextInt();
        memo = new int[K + 1][K + 1];

        int sum = 0;
        for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        }
        System.out.println(sum);
    }

    public static int gcd(int a, int b) {
//        System.out.printf("%7d %7d%n", a, b);
        if (memo[a][b] > 0) return memo[a][b];
        if (b == 0) return a;
        return gcd(b, a % b);
    }
} public class Main {
    static int[][] memo;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int K = scanner.nextInt();
        memo = new int[K + 1][K + 1];

        int sum = 0;
        for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        }
        System.out.println(sum);
    }

    public static int gcd(int a, int b) {
//        System.out.printf("%7d %7d%n", a, b);
        if (memo[a][b] > 0) return memo[a][b];
        if (b == 0) return a;
        return gcd(b, a % b);
    }
} Main

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    static int[][] memo;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int K = scanner.nextInt();
        memo = new int[K + 1][K + 1];

        int sum = 0;
        for (int i = 1 ; i <= K ; i++) {
            for (int j = 1 ; j <= K ; j++) {
                for (int k = 1 ; k <= K ; k++) {
                    int[] target = {i, j, k};
                    Arrays.sort(target);
//                    System.out.printf("%d %d %d%n", target[0], target[1], target[2]);
                    sum += gcd(target[2], gcd(target[1], target[0]));
                }
            }
        }
        System.out.println(sum);
    }

    public static int gcd(int a, int b) {
//        System.out.printf("%7d %7d%n", a, b);
        if (memo[a][b] > 0) return memo[a][b];
        if (b == 0) return a;
        return gcd(b, a % b);
    }
}
