#include <bits/stdc++.h>
using namespace std;
long long n, m, k;
long long f(long long mid) {
  long long i;
  long long ans = 0;
  for (i = 1; i <= n; i++) {
    ans += min((mid) / i, m);
  }
  if (ans >= k) return 1;
  return 0;
}
long long f1(long long mid) {
  long long i;
  long long ans = 0;
  for (i = 1; i <= n; i++) {
    ans += min((mid) / i, m);
  }
  if (ans < k) return 1;
  return 0;
}
long long f2(long long mid) {
  long long i;
  long long ans = 0;
  for (i = 1; i <= n; i++) {
    ans += min((mid) / i, m);
  }
  if (ans == k) {
    for (i = 1; i <= n; i++)
      if (mid % i == 0 && i > 1 || mid <= m) return 1;
  }
  return 0;
}
int main() {
  cin >> n >> m >> k;
  long long low, high;
  high = n * m;
  low = 1;
  while (high - low > 1) {
    long long mid;
    mid = (low + high) / 2;
    if (f(mid)) {
      high = mid;
    } else
      low = mid;
  }
  if (f(low))
    cout << low << endl;
  else
    cout << high;
  return 0LL;
}
