#include <bits/stdc++.h>
using namespace std;
int factor[4321321];
int gcd[2121][2121];
unsigned hits[4321321];
unsigned fact[20];
unsigned tot = 0;
void dfs(int i, int inc, int got = 1) {
  while (i--) dfs(i, inc, got * fact[i]);
  if (got != 1) hits[got] += inc;
}
unsigned sfd(int i, int got = 1, int sign = -1) {
  unsigned res = hits[got] * sign;
  while (i--) res += sfd(i, got * fact[i], -sign);
  return res;
}
int main() {
  for (int i = 0; i < 2100; i++)
    for (int j = 0; j < 2100; j++) gcd[i][j] = (i ? gcd[j % i][i] : j);
  for (unsigned i = 2; i < 4321321; i++)
    if (not factor[i])
      for (unsigned j = i * (factor[i] = i); j < 4321321; j += i)
        if (not factor[j]) factor[j] = i;
  int a, b, c;
  cin >> a >> b >> c;
  for (int i = 1; i <= b; i++)
    for (int j = 1; j <= c; j++)
      if (gcd[i][j] == 1) {
        int last = -1, facts = 0;
        for (int u = i, q = -1; u - 1; u /= (q = factor[u]))
          if (q != factor[u]) fact[facts++] = factor[u];
        for (int v = j, q = -1; v - 1; v /= (q = factor[v]))
          if (q != factor[v]) fact[facts++] = factor[v];
        dfs(facts, (b / i) * (c / j));
        tot += (b / i) * (c / j);
      }
  unsigned res = 0;
  for (int i = 1; i <= a; i++) {
    int facts = 0, square_free = 1;
    for (int u = i, q = -1; u - 1; u /= (q = factor[u]))
      if (q != factor[u]) fact[facts++] = factor[u], square_free *= factor[u];
    res += (a / i) * (tot - sfd(facts));
  }
  cout << (res & ((1ll << 30ll) - 1ll)) << endl;
}
