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.awt.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;

public class B146 {

	static int a, b, c;
	static HashMap<Long, Long> all = new HashMap<Long, Long>();

	static int _sieve_size;
	static boolean[] bs; // 10^7 should be enough for most cases
	static ArrayList<Long> primes = new ArrayList<Long>(); // compact list
															// of

	// primes
	// in form of
	// vector<int>

	// first part

	static void sieve(int upperbound) { // create list of primes in
										// [0..upperbound]
		_sieve_size = upperbound + 1; // add 1 to include upperbound
		bs = new boolean[_sieve_size];
		Arrays.fill(bs, true); // set all bits to 1
		bs[0] = bs[1] = false; // except index 0 and 1
		for (long i = 2; i < _sieve_size; i++)
			if (bs[(int) i]) {
				// cross out multiples of i starting from i * i!
				for (long j = i * i; j < _sieve_size; j += i)
					bs[(int) j] = false;
				primes.add((long) i); // also add this vector containing list of
										// primes
			}
	} // call this method in main method

	static long numDiv(long N) {
		int PF_idx = 0;
		long PF = primes.get(PF_idx), ans = 1; // start from ans = 1
		while (N != 1 && (PF * PF <= N)) {
			long power = 0; // count the power
			while (N % PF == 0) {
				N /= PF;
				power++;
			}
			ans *= (power + 1); // according to the formula
			PF = primes.get(++PF_idx);
		}
		if (N != 1)
			ans *= 2; // (last factor has pow = 1, we add 1 to it)
		return ans;
	}

	static long getans(long n) {

		if (!all.containsKey(n)) {
			all.put(n, numDiv(n));
			return all.get(n);
		} else
			return all.get(n);

	}

	public void run() {

		Scanner in = new Scanner(System.in);
		a = in.nextInt();
		b = in.nextInt();
		c = in.nextInt();

		long mod = 1073741824;
		long ans = 0;

		for (int i = 1; i <= a; i++) {

			for (int j = 1; j <= b; j++) {

				for (int k = 1; k <= c; k++) {

					ans = (ans % mod + getans(i * j * k) % mod) % mod;

				}

			}

		}
		
		System.out.println(ans);
		

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new B146().sieve(1000010);
		new B146().run();

	}

}
