#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
struct tree {
  long long pos, h;
};
bool compare(pair<int, double> a, pair<int, double> b) {
  if (a.second == b.second && a.first < b.first)
    return 1;
  else if (a.second == b.second && a.first > b.first)
    return 0;
  else if (a.second > b.second)
    return 1;
  else
    return 0;
}
long long findFact(int n) {
  if (n == 0) return 1;
  return n * findFact(n - 1);
}
int isSubstring(string s1, string s2) {
  int M = s1.length();
  int N = s2.length();
  for (int i = 0; i <= N - M; i++) {
    int j;
    for (j = 0; j < M; j++)
      if (s2[i + j] != s1[j]) break;
    if (j == M) return i;
  }
  return -1;
}
long long countDivisors(long long n) {
  long long cnt = 0;
  for (long long i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      if (n / i == i)
        cnt++;
      else
        cnt = cnt + 2;
    }
  }
  return cnt % 1073741824;
}
long long fr[maxn];
void sieve(int sz) {
  for (int i = 1; i <= sz; i++)
    for (int j = i; j <= sz; j += i) fr[j]++;
}
void solve() {
  int a, b, c;
  cin >> a >> b >> c;
  sieve(a * b * c);
  long long sum = 0;
  vector<long long> store;
  for (long long i = 1; i < a + 1; i++)
    for (long long j = 1; j < b + 1; j++)
      for (long long k = 1; k < c + 1; k++) {
        long long mul = i * j * k;
        sum += fr[mul] % 1073741824;
      }
  cout << sum % 1073741824 << "\n";
}
int main() { solve(); }
