#include <bits/stdc++.h>
using namespace std;
long long best;
int n, m, k;
int main() {
  cin >> n >> m >> k;
  if (k > n + m - 2)
    cout << -1 << endl;
  else {
    for (int area = 1; area <= (int)sqrt(n); area++) {
      int x = n / area;
      if (n / x == area) {
        int cut = min(k, x - 1);
        int remainCut = k - cut;
        if (remainCut + 1 != 0)
          best = max(best, (long long)area * (long long)(m / (remainCut + 1)));
      }
      int _area = n / area;
      x = n / _area;
      if (n / x == _area) {
        int cut = min(k, x - 1);
        int remainCut = k - cut;
        if (remainCut + 1 != 0)
          best = max(best, (long long)_area * (long long)(m / (remainCut + 1)));
      }
    }
    cout << best << endl;
  }
  return 0;
}
