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 int N = 5e3 + 50, L = 5000;
int n, A, B, C, mnpr[N], pr[N], pt, npr[N], cpr[N][N], tot;
unsigned int c[N][N], mu[N];
inline int gcd(int x, int y) { return y ? gcd(y, x % y) : x; }
inline void sieve() {
  mnpr[1] = mu[1] = 1;
  for (int i = 2; i <= L; i++) {
    if (!npr[i]) {
      mnpr[i] = i;
      mu[i] = -1;
      pr[++pt] = i;
    }
    for (int j = 1; j <= pt; j++) {
      int k = i * pr[j];
      if (k > L) break;
      npr[k] = 1;
      mnpr[k] = pr[j];
      if (!(i % pr[j])) {
        mu[k] = 0;
        break;
      } else
        mu[k] = -mu[i];
    }
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (mnpr[j] == j)
        cpr[i][j] = (gcd(i, j) == 1);
      else
        cpr[i][j] = cpr[i][mnpr[j]] && cpr[i][j / mnpr[j]];
  for (int x = 1; x <= n; ++x) {
    for (int i = 1; i <= n; ++i)
      if (cpr[i][x])
        for (int m = i; m <= n; m += i) c[x][m]++;
    for (int i = 1; i <= n; i++) c[x][i] += c[x][i - 1];
  }
}
int main() {
  cin >> A >> B >> C;
  n = max(A, B);
  n = max(n, C);
  sieve();
  unsigned int ans = 0;
  for (int i = 1; i <= A; i++) {
    unsigned int rs = 0;
    for (int d = 1; d <= min(B, C); ++d)
      if (cpr[i][d]) rs += mu[d] * c[i][B / d] * c[i][C / d];
    ans += rs * (A / i);
  }
  ans &= ((1 << 30) - 1);
  cout << ans;
}