#include <bits/stdc++.h>
using namespace std;
long long res;
int m, n, s;
int factor[505 * 505];
int prime[505 * 505];
bool isprime[505 * 505];
pair<int, int> T[505 * 505];
int cT;
void generate(int depth, int cur, int *factor) {
  if (depth == cT + 1) {
    factor[++factor[0]] = cur;
    return;
  }
  for (int i = 0; i <= T[depth].second; ++i) {
    generate(depth + 1, cur, factor);
    cur *= T[depth].first;
  }
}
void decompose(int number, int *factor) {
  cT = 0;
  for (int i = 1; i <= prime[0] && prime[i] * prime[i] <= number; ++i)
    if (number % prime[i] == 0) {
      T[++cT].first = prime[i];
      T[cT].second = 0;
      while (number % prime[i] == 0) {
        number /= prime[i];
        ++T[cT].second;
      }
    }
  if (number > 1) {
    T[++cT].first = number;
    T[cT].second = 1;
  }
  factor[0] = 0;
  generate(1, 1, factor);
}
long long exact_rect(int a, int b) {
  return 2LL * (a + 1 >> 1) * (b + 1 >> 1) - 1;
}
int main() {
  memset(isprime, 1, sizeof(isprime));
  for (int i = 2; i <= 505; ++i)
    if (isprime[i])
      for (int j = i * i; j < 505 * 505; j += i) isprime[j] = false;
  for (int i = 2; i < 505 * 505; ++i)
    if (isprime[i]) prime[++prime[0]] = i;
  long long res = 0;
  scanf("%d%d%d", &m, &n, &s);
  for (int a = 1; a <= m; a += 2)
    for (int b = 1; b <= n; b += 2) {
      if (a * b > s) continue;
      if (a * b == s)
        res += exact_rect(a, b) * (m - a + 1) * (n - b + 1);
      else {
        int rem = s - a * b;
        if (rem & 1) continue;
        decompose(rem >> 1, factor);
        for (int i = 1; i <= factor[0]; ++i) {
          int d = factor[i];
          if (d % 2 == 0) continue;
          if (d >= b) continue;
          int c = (rem >> 1) / d;
          int l1 = a + c * 2;
          int l2 = b;
          if (m - l1 + 1 >= 1 && n - l2 + 1 >= 1)
            res += 2LL * (m - l1 + 1) * (n - l2 + 1);
        }
      }
    }
  cout << res << endl;
}
