#include <bits/stdc++.h>
using namespace std;
long long n, m, k;
void nhap() { cin >> n >> m >> k; }
long long tinh(long long x) {
  if (x > k) return -1e19 + 10;
  long long r = n / (x + 1);
  long long h = k - x;
  long long d = m / (h + 1);
  return r * d;
}
void xuli() {
  if (n - 1 + m - 1 < k) {
    cout << -1;
    return;
  }
  long long kq = -1e19 + 10;
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      kq = max(kq, tinh(1ll * i - 1));
      kq = max(kq, tinh(n / i - 1));
    }
  }
  swap(n, m);
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      kq = max(kq, tinh(1ll * i - 1));
      kq = max(kq, tinh(n / i - 1));
    }
  }
  cout << kq;
}
int main() {
  nhap();
  xuli();
}
