import java.util.*;
import java.io.*;
public class Main {
    
    public static void main(String[] args) {
        MyScanner ms = new MyScanner();
        int K = ms.nextInt();
        long sum=0;
        for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        }
       System.out.println(sum);
    }
   static  int gcd (int a, int b) {
        return b != 0 ? gcd (b, a % b) : a;
    }
    public static class MyScanner {
        BufferedReader br;
        StringTokenizer st;
    
        public MyScanner() {
           br = new BufferedReader(new InputStreamReader(System.in));
        }
    
        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
    
        int nextInt() {
            return Integer.parseInt(next());
        }
    
        long nextLong() {
            return Long.parseLong(next());
        }
    
        double nextDouble() {
            return Double.parseDouble(next());
        }
    
        String nextLine(){
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        }
    
     }
} import java.util.*; util.* java import java.io.*; io.* java public class Main {
    
    public static void main(String[] args) {
        MyScanner ms = new MyScanner();
        int K = ms.nextInt();
        long sum=0;
        for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        }
       System.out.println(sum);
    }
   static  int gcd (int a, int b) {
        return b != 0 ? gcd (b, a % b) : a;
    }
    public static class MyScanner {
        BufferedReader br;
        StringTokenizer st;
    
        public MyScanner() {
           br = new BufferedReader(new InputStreamReader(System.in));
        }
    
        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
    
        int nextInt() {
            return Integer.parseInt(next());
        }
    
        long nextLong() {
            return Long.parseLong(next());
        }
    
        double nextDouble() {
            return Double.parseDouble(next());
        }
    
        String nextLine(){
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        }
    
     }
} Main public static void main(String[] args) {
        MyScanner ms = new MyScanner();
        int K = ms.nextInt();
        long sum=0;
        for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        }
       System.out.println(sum);
    } main {
        MyScanner ms = new MyScanner();
        int K = ms.nextInt();
        long sum=0;
        for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        }
       System.out.println(sum);
    } MyScanner ms = new MyScanner(); ms new MyScanner() int K = ms.nextInt(); K ms.nextInt() ms.nextInt ms long sum=0; sum 0 for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        } int i=1; int i=1; i 1 i<=K i K i++ i++ i for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        } for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        } int j=1; int j=1; j 1 j<=K j K j++ j++ j for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        } for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        } int c=1; int c=1; c 1 c<=K c K c++ c++ c {
            sum+=(gcd(gcd(i,j),c));
        } {
            sum+=(gcd(gcd(i,j),c));
        } sum+=(gcd(gcd(i,j),c)) sum (gcd(gcd(i,j),c)) gcd gcd(i,j) gcd i j c System.out.println(sum) System.out.println System.out System System.out sum String[] args args static  int gcd (int a, int b) {
        return b != 0 ? gcd (b, a % b) : a;
    } gcd {
        return b != 0 ? gcd (b, a % b) : a;
    } return b != 0 ? gcd (b, a % b) : a; b != 0 ? gcd (b, a % b) : a b != 0 b 0 gcd (b, a % b) gcd b a % b a b a int a a int b b public static class MyScanner {
        BufferedReader br;
        StringTokenizer st;
    
        public MyScanner() {
           br = new BufferedReader(new InputStreamReader(System.in));
        }
    
        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
    
        int nextInt() {
            return Integer.parseInt(next());
        }
    
        long nextLong() {
            return Long.parseLong(next());
        }
    
        double nextDouble() {
            return Double.parseDouble(next());
        }
    
        String nextLine(){
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        }
    
     } MyScanner BufferedReader br; br StringTokenizer st; st public MyScanner() {
           br = new BufferedReader(new InputStreamReader(System.in));
        } MyScanner {
           br = new BufferedReader(new InputStreamReader(System.in));
        } br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        } next {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        } while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } IOException e {
                    e.printStackTrace();
                } e.printStackTrace() e.printStackTrace e {
                    st = new StringTokenizer(br.readLine());
                } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() {
            return Integer.parseInt(next());
        } nextInt {
            return Integer.parseInt(next());
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() {
            return Long.parseLong(next());
        } nextLong {
            return Long.parseLong(next());
        } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() {
            return Double.parseDouble(next());
        } nextDouble {
            return Double.parseDouble(next());
        } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine(){
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        } nextLine {
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        } String str = ""; str "" try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        } catch (IOException e) {
           e.printStackTrace();
        } IOException e {
           e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
           str = br.readLine();
        } str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {
    
    public static void main(String[] args) {
        MyScanner ms = new MyScanner();
        int K = ms.nextInt();
        long sum=0;
        for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        }
       System.out.println(sum);
    }
   static  int gcd (int a, int b) {
        return b != 0 ? gcd (b, a % b) : a;
    }
    public static class MyScanner {
        BufferedReader br;
        StringTokenizer st;
    
        public MyScanner() {
           br = new BufferedReader(new InputStreamReader(System.in));
        }
    
        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
    
        int nextInt() {
            return Integer.parseInt(next());
        }
    
        long nextLong() {
            return Long.parseLong(next());
        }
    
        double nextDouble() {
            return Double.parseDouble(next());
        }
    
        String nextLine(){
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        }
    
     }
} public class Main {
    
    public static void main(String[] args) {
        MyScanner ms = new MyScanner();
        int K = ms.nextInt();
        long sum=0;
        for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        }
       System.out.println(sum);
    }
   static  int gcd (int a, int b) {
        return b != 0 ? gcd (b, a % b) : a;
    }
    public static class MyScanner {
        BufferedReader br;
        StringTokenizer st;
    
        public MyScanner() {
           br = new BufferedReader(new InputStreamReader(System.in));
        }
    
        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
    
        int nextInt() {
            return Integer.parseInt(next());
        }
    
        long nextLong() {
            return Long.parseLong(next());
        }
    
        double nextDouble() {
            return Double.parseDouble(next());
        }
    
        String nextLine(){
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        }
    
     }
} Main
import java.util.*;
import java.io.*;
public class Main {
    
    public static void main(String[] args) {
        MyScanner ms = new MyScanner();
        int K = ms.nextInt();
        long sum=0;
        for(int i=1;i<=K;i++)
        for(int j=1;j<=K;j++)
        for(int c=1;c<=K;c++){
            sum+=(gcd(gcd(i,j),c));
        }
       System.out.println(sum);
    }
   static  int gcd (int a, int b) {
        return b != 0 ? gcd (b, a % b) : a;
    }
    public static class MyScanner {
        BufferedReader br;
        StringTokenizer st;
    
        public MyScanner() {
           br = new BufferedReader(new InputStreamReader(System.in));
        }
    
        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
    
        int nextInt() {
            return Integer.parseInt(next());
        }
    
        long nextLong() {
            return Long.parseLong(next());
        }
    
        double nextDouble() {
            return Double.parseDouble(next());
        }
    
        String nextLine(){
            String str = "";
        try {
           str = br.readLine();
        } catch (IOException e) {
           e.printStackTrace();
        }
        return str;
        }
    
     }
}