#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void smin(T &a, U b) {
  if (a > b) a = b;
}
template <typename T, typename U>
inline void smax(T &a, U b) {
  if (a < b) a = b;
}
int power(int a, int b, int m, int ans = 1) {
  for (; b; b >>= 1, a = 1LL * a * a % m)
    if (b & 1) ans = 1LL * ans * a % m;
  return ans;
}
long long n, m, k;
long long f(int u) {
  if (u < 0) return 0;
  if (u > k) return 0;
  long long first = (n / (u + 1)) * (m / (k - u + 1));
  return first;
}
int main() {
  scanf("%I64d%I64d%I64d", &n, &m, &k);
  if (n + m - 2 < k) {
    puts("-1");
    return 0;
  }
  long long mn = 0;
  smax(mn, f(0));
  smax(mn, f(k));
  smax(mn, f(n - 1));
  smax(mn, f(k - m + 1));
  for (int i = 1; i <= sqrt(n) + 1; i++) {
    if (n % i == 0) {
      smax(mn, f(i - 1));
      smax(mn, f(n / i - 1));
    }
  }
  for (int i = 1; i <= 10000000; i++) {
    smax(mn, f(i));
    smax(mn, f(k - i));
  }
  for (int i = 1; i <= sqrt(m) + 1; i++) {
    if (m % i == 0) {
      smax(mn, f(k - i - 1));
      smax(mn, f(k - m / i - 1));
    }
  }
  cout << mn << endl;
}
