Problem: 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 ≤ 2000).

Output

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

Examples

Input

2 2 2


Output

20


Input

4 4 4


Output

328


Input

10 10 10


Output

11536

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.

Solution (in PYTHON3):

Solution:
import sys
import time
import math
from functools import lru_cache

INF = 10 ** 18 + 3
EPS = 1e-10
MAX_CACHE = 10 ** 9

MOD = 1 << 30


# Decorators
def time_it(function, output=sys.stderr):
    def wrapped(*args, **kwargs):
        start = time.time()
        res = function(*args, **kwargs)
        elapsed_time = time.time() - start
        print('"%s" took %f ms' % (function.__name__, elapsed_time * 1000),
              file=output)
        return res

    return wrapped


@lru_cache(MAX_CACHE)
def calc_prime_divs(n):
    if n == 1:
        return ()
    sieve = [True] * (n // 2)
    for i in range(3, int(n ** 0.5) + 1, 2):
        if sieve[i // 2]:
            sieve[i * i // 2::i] = [False] * ((n - i * i - 1) // (2 * i) + 1)
    return (2,) + tuple(2 * i + 1 for i in range(1, n // 2) if sieve[i])


divisors = ()


@lru_cache(MAX_CACHE)
def calc_num_of_divs(n):
    # if n % 8 == 4 and n > 4:
    #     return calc_num_of_divs(4) * calc_num_of_divs(n // 4)
    # if n % 16 == 8:
    #     return (calc_num_of_divs(16) - 1) * calc_num_of_divs(n // 8)
    # if n % 27 == 9:
    #     return (calc_num_of_divs(27) - 1) * calc_num_of_divs(n // 9)
    res = 1
    for div in divisors:
        if n < div:
            break
        k = 1
        while n % div == 0:
            k += 1
            n //= div
        res *= k

    return res


@time_it
def main():
    a, b, c = map(int, input().split())
    global divisors
    divisors = calc_prime_divs(a * b * c + 1)
    print(sum(calc_num_of_divs(i * j * k) % MOD
              for i in range(a, 0, -1)
              for j in range(b, 0, -1)
              for k in range(c, 0, -1)))


def set_input(file):
    global input
    input = lambda: file.readline().strip()


def set_output(file):
    global print
    local_print = print

    def print(*args, **kwargs):
        kwargs["file"] = kwargs.get("file", file)
        return local_print(*args, **kwargs)


if __name__ == '__main__':
    set_input(open("input.txt", "r") if "MINE" in sys.argv else sys.stdin)
    set_output(sys.stdout)
    main()