#include <bits/stdc++.h>
using namespace std;
const int Maxn = 500005;
long long n, m, k;
int main() {
  cin >> n >> m >> k;
  if (n + m - 2 < k)
    puts("-1");
  else {
    if (n > m) swap(n, m);
    long long Max = 0;
    for (int i = 0; i * i <= m && i <= k; i++) {
      long long x = m / (i + 1);
      long long y = n / (k - i + 1);
      Max = max(x * y, Max);
    }
    if (k >= m) Max = max(Max, n / (k - m + 2));
    for (int i = 0; i * i <= n && i <= k; i++) {
      long long x = n / (i + 1);
      long long y = m / (k - i + 1);
      Max = max(x * y, Max);
    }
    if (k >= n) Max = max(Max, m / (k - n + 2));
    cout << Max << endl;
  }
  return 0;
}
