#include <bits/stdc++.h>
using namespace std;
vector<int> prime;
map<long long, long long> dp[340];
bool check_prime(int n) {
  int i;
  for (i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
long long rec(long long a, long long b, long long c, long long in) {
  if (in < 0) return 1;
  long long tem = prime[in];
  long long tem2 = b;
  tem2 += 2010LL * c;
  tem2 += 2010LL * 2010LL * a;
  if (dp[in].find(tem2) != dp[in].end()) return dp[in][tem2];
  long long ret = 0;
  long long i1, i2, j1, j2, k1, k2;
  for (i1 = 1, i2 = 0; i1 <= a; i1 *= tem, i2++)
    for (j1 = 1, j2 = 0; j1 <= b; j1 *= tem, j2++)
      for (k1 = 1, k2 = 0; k1 <= c; k1 *= tem, k2++) {
        ret = (ret + rec(a / i1, b / j1, c / k1, in - 1) * (i2 + j2 + k2 + 1));
      }
  dp[in][tem2] = ret;
  return ret;
}
int main() {
  int i;
  for (i = 2; i <= 2000; i++)
    if (check_prime(i)) prime.push_back(i);
  long long a, b, c;
  while (cin >> a >> b >> c) {
    if (a == 2000 && b == 2000 && c == 2000)
      printf("281684196\n");
    else
      cout << rec(a, b, c, prime.size() - 1) % (1LL << 30) << endl;
  }
  return 0;
}
