#include <bits/stdc++.h>
using namespace std;
const int mod = 1073741824;
const int maxn = 2005;
map<array<int, 4>, long long> DP;
unordered_map<int, int> mp;
int A, B, C;
bool vis[2005];
int primes[500];
int tot;
void init() {
  tot = 0;
  for (int i = 2; i <= 2000; ++i) {
    if (!vis[i]) {
      ++tot;
      primes[tot] = i;
      for (int j = i; j <= 2000; j += i) {
        vis[j] = 1;
      }
    }
  }
  for (int i = 1; i <= tot; ++i) {
    mp[primes[i]] = i;
  }
}
long long solve(int a, int b, int c, int p) {
  if (p < 1) {
    return 1;
  }
  array<int, 4> t = {a, b, c, p};
  sort(t.begin(), t.begin() + 3);
  auto it = DP.find(t);
  if (it != DP.end()) {
    return it->second;
  }
  long long ret = 0;
  int pp = primes[p];
  for (int na = a, x = 0; na >= 1; na /= pp, ++x) {
    for (int nb = b, y = 0; nb >= 1; nb /= pp, ++y) {
      for (int nc = c, z = 0; nc >= 1; nc /= pp, ++z) {
        long long val = solve(na, nb, nc, p - 1) * (x + y + z + 1) % mod;
        ret = (ret + val) % mod;
      }
    }
  }
  return DP[t] = ret;
}
int main() {
  cin >> A >> B >> C;
  init();
  cout << solve(A, B, C, tot) << endl;
}
