import java.util.Scanner;
//import java.util.Random;

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

		int k=stdIn.nextInt();
		
		long ans=0;
		for(int i=1;i<=k;++i){
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		}
		
		System.out.println(ans);
	}
	
	static int gcd(int x,int y){
		return (y==0)?x:gcd(y,x%y);
	}
} import java.util.Scanner; Scanner java.util class Main{
	public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);

		int k=stdIn.nextInt();
		
		long ans=0;
		for(int i=1;i<=k;++i){
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		}
		
		System.out.println(ans);
	}
	
	static int gcd(int x,int y){
		return (y==0)?x:gcd(y,x%y);
	}
} Main public static void main(String[] args){
		Scanner stdIn=new Scanner(System.in);

		int k=stdIn.nextInt();
		
		long ans=0;
		for(int i=1;i<=k;++i){
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		}
		
		System.out.println(ans);
	} main {
		Scanner stdIn=new Scanner(System.in);

		int k=stdIn.nextInt();
		
		long ans=0;
		for(int i=1;i<=k;++i){
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		}
		
		System.out.println(ans);
	} Scanner stdIn=new Scanner(System.in); stdIn new Scanner(System.in) int k=stdIn.nextInt(); k stdIn.nextInt() stdIn.nextInt stdIn long ans=0; ans 0 for(int i=1;i<=k;++i){
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		} int i=1; int i=1; i 1 i<=k i k ++i ++i i {
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		} {
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		} for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			} int j=1; int j=1; j 1 j<=k j k ++j ++j j {
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			} {
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			} for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				} int l=1; int l=1; l 1 l<=k l k ++l ++l l {
					ans+=gcd(i,gcd(j,l));
				} {
					ans+=gcd(i,gcd(j,l));
				} ans+=gcd(i,gcd(j,l)) ans gcd(i,gcd(j,l)) gcd i gcd(j,l) gcd j l System.out.println(ans) System.out.println System.out System System.out ans String[] args args static int gcd(int x,int y){
		return (y==0)?x:gcd(y,x%y);
	} gcd {
		return (y==0)?x:gcd(y,x%y);
	} return (y==0)?x:gcd(y,x%y); (y==0)?x:gcd(y,x%y) (y==0) y 0 x gcd(y,x%y) gcd y x%y x y int x x int y y
import java.util.Scanner;
//import java.util.Random;

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

		int k=stdIn.nextInt();
		
		long ans=0;
		for(int i=1;i<=k;++i){
			for(int j=1;j<=k;++j){
				for(int l=1;l<=k;++l){
					ans+=gcd(i,gcd(j,l));
				}
			}
		}
		
		System.out.println(ans);
	}
	
	static int gcd(int x,int y){
		return (y==0)?x:gcd(y,x%y);
	}
}