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>
using namespace std;
const long long MAXN = 2000;
const long long MOD = 1073741824;
long long t[MAXN + 100], u[MAXN + 100];
long long g[MAXN + 100][MAXN + 100];
bool pd[MAXN * 2];
long long a, b, c, d, i, j, len, k, ans;
long long gcd(long long x, long long y) {
  if (y == 0)
    return x;
  else
    return gcd(y, x % y);
}
void init() {
  len = 0;
  memset(pd, false, sizeof(pd));
  memset(u, 0, sizeof(u));
  u[1] = 1;
  for (i = 2; i <= MAXN; i++) {
    if (!pd[i]) {
      t[++len] = i;
      u[i] = -1;
    }
    for (j = 1; j <= len; j++) {
      if (t[j] > MAXN / i) break;
      pd[i * t[j]] = true;
      if (i % t[j] == 0) break;
      u[i * t[j]] = -u[i];
    }
  }
  for (i = 1; i <= MAXN; i++)
    for (j = 1; j <= MAXN; j++) g[i][j] = gcd(i, j);
}
long long cal(long long d, long long a) {
  long long sum = 0;
  for (long long i = 1; i <= a / d; i++)
    if (g[i * d][k] == 1) sum = (sum + a / d / i) % MOD;
  return sum;
}
int main() {
  init();
  cin >> a >> b >> c;
  ans = 0;
  for (d = 1; d <= min(a, b); d++) {
    if (u[d] == 0) continue;
    for (k = 1; k <= c; k++)
      ans = (ans + u[d] * (c / k) % MOD * cal(d, a) % MOD * cal(d, b) % MOD +
             MOD) %
            MOD;
  }
  cout << ans << endl;
  return 0;
}