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 CPP):

Solution:
#include <bits/stdc++.h>
const int P = (1 << 30) - 1;
int a, b, c, p[2005], vis[2005];
std::unordered_map<long long, int> mmp[2005];
void sieve(int n) {
  vis[0] = vis[1] = 1;
  for (int i = 2; i <= n; ++i) {
    if (!vis[i]) p[++*p] = i;
    for (int j = 1; j <= *p && i * p[j] <= n; ++j) {
      vis[i * p[j]] = 1;
      if (i % p[j] == 0) break;
    }
  }
}
int dp(int kk1, int kk2, int kk3, int pid) {
  if (pid == 0) return 1;
  long long ha = 1ll * kk1 * (a + 1) * (a + 1) + 1ll * kk2 * (a + 1) + kk3;
  if (mmp[pid].count(ha)) return mmp[pid][ha];
  int ans = 0;
  int k1 = 1, k2 = 1, k3 = 1, k4 = 0;
  while (k1 <= kk1) {
    k2 = 1;
    int k5 = 0;
    while (k2 <= kk2) {
      k3 = 1;
      int k6 = 0;
      while (k3 <= kk3) {
        (ans +=
         1ll * dp(kk1 / k1, kk2 / k2, kk3 / k3, pid - 1) * (k4 + k5 + k6 + 1) &
         P) &= P;
        k3 *= p[pid], ++k6;
      }
      k2 *= p[pid], ++k5;
    }
    k1 *= p[pid], ++k4;
  }
  return mmp[pid][ha] = ans;
}
int main() {
  scanf("%d%d%d", &a, &b, &c);
  if (a < b) a ^= b ^= a ^= b;
  if (a < c) a ^= c ^= a ^= c;
  sieve(a);
  printf("%d\n", dp(a, b, c, *p));
  return 0;
}