#include <bits/stdc++.h>
using namespace std;
bool isprime[1000007];
vector<int> prime;
int fac[1000007];
void sieve() {
  for (int i = 2; i < 1000007; i++) isprime[i] = true;
  isprime[0] = isprime[1] = false;
  for (int i = 2; i <= 1000007; i++) {
    if (isprime[i]) {
      for (int j = 2; j * i <= 1000007; j++) {
        isprime[i * j] = false;
      }
    }
  }
  for (int i = 2; i < 1000007; i++) {
    if (isprime[i]) {
      prime.push_back(i);
    }
  }
}
int main() {
  sieve();
  for (int i = 1; i < 1000007; i++) {
    fac[i] = 1;
  }
  for (int i = 2; i < 1000007; i++) {
    int ctr = 1, tmp = i;
    if (isprime[tmp])
      fac[i] = 2;
    else {
      fac[i] = 1;
      for (int j = 0; prime[j] * prime[j] <= i && tmp != 1 && j < prime.size();
           j++) {
        ctr = 1;
        while (tmp % prime[j] == 0) {
          tmp /= prime[j];
          ctr++;
          if (tmp == 1) break;
        }
        fac[i] *= ctr;
        fac[i] %= 1073741824;
        ctr = 1;
        if (isprime[tmp]) {
          ctr++;
          tmp = 1;
        }
        fac[i] *= ctr;
        fac[i] %= 1073741824;
      }
    }
  }
  long long a, b, c;
  cin >> a >> b >> c;
  long long res = 0;
  for (int i = 1; i <= a; i++) {
    for (int j = 1; j <= b; j++) {
      for (int k = 1; k <= c; k++) {
        res += fac[(i * j * k)];
        if (res >= 1073741824) res %= 1073741824;
      }
    }
  }
  res %= 1073741824;
  cout << res;
  return 0;
}
