Let's denote d(n) as the number of divisors of a positive integer n. You are given three integers a, b and c. Your task is to calculate the following sum:

<image>

Find the sum modulo 1073741824 (230).

Input

The first line contains three space-separated integers a, b and c (1 ≤ a, b, c ≤ 100).

Output

Print a single integer — the required sum modulo 1073741824 (230).

Examples

Input

2 2 2


Output

20


Input

5 6 7


Output

1520

Note

For the first example.

  * d(1·1·1) = d(1) = 1; 
  * d(1·1·2) = d(2) = 2; 
  * d(1·2·1) = d(2) = 2; 
  * d(1·2·2) = d(4) = 3; 
  * d(2·1·1) = d(2) = 2; 
  * d(2·1·2) = d(4) = 3; 
  * d(2·2·1) = d(4) = 3; 
  * d(2·2·2) = d(8) = 4. 



So the result is 1 + 2 + 2 + 3 + 2 + 3 + 3 + 4 = 20.
import java.io.*;

public class Tester{
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String[] numeros = in.readLine().split(" ");
		int a = Integer.parseInt(numeros[0]);
		int b = Integer.parseInt(numeros[1]);
		int c = Integer.parseInt(numeros[2]);
		
		int[] criba = new int[101];
		criba[0] = 1;
		criba[1] = 1;
		for(int k=2; k<criba.length ; k++){
			criba[k] = k;
		}
		for(int i=2; i<criba.length; i++){
			for(int k=2; k<criba.length ; k++){
				if(k%i==0 && criba[k]==k)
					criba[k] = i;
			}
		}
		

		
		int devolver = 0;
		int[] numerosOcupados1 = new int[101];
		int[] numerosOcupados2 = new int[101];
		int[] numerosOcupados3 = new int[101];
		int modulo = (int) (1073741824*Math.pow(2, 30));
		for(int i1=1; i1<=a; i1++){
			for(int i2=1; i2<=b; i2++){
				for(int i3=1; i3<=c; i3++){
					int[] fp1 = FP(i1,criba, numerosOcupados1);
					int[] fp2 = FP(i2,criba, numerosOcupados2);
					int[] fp3 = FP(i3,criba, numerosOcupados3);
					int total = 1;
					int[] numerosOcupados = new int[101];
					for(int k=0; k<100; k++){
						int n1 = numerosOcupados1[k];
						agregar(numerosOcupados, n1);
						int n2 = numerosOcupados2[k];
						agregar(numerosOcupados, n2);
						int n3= numerosOcupados3[k];
						agregar(numerosOcupados, n3);
						if( n1==0 && n2==0 && n3==0)
							break;
					}
					for(int k=0; k<100; k++){
						int numero = numerosOcupados[k];
						if(numero==0)
							break;
					    total = ((total%modulo)*(fp1[numero] + fp2[numero] + fp3[numero] + 1)%modulo)%modulo;
					}
					devolver = (devolver%modulo + total%modulo)%modulo;
					
				}
			}
		}
		System.out.println(devolver);
		
	}
	
	public static void agregar(int[] numerosOcupados, int n){
		for(int k=0; k<numerosOcupados.length; k++){
			int numero = numerosOcupados[k];
			if(numero==n)
				break;
			if(numero==0){
				numerosOcupados[k] = n;
				break;
			}
		}
	}
	
	public static int[] FP(int n, int[] criba, int[] numerosOcupados){
		int[] fp = new int[101];
		int actual = n;
		int desocupado = 0;
		while(actual>1){
			int factor = criba[actual];
			numerosOcupados[desocupado] = factor;
			desocupado++;
			fp[factor]++;
			actual = actual/factor;
		}
		return fp;
	}
}