#include <bits/stdc++.h>
using namespace std;
inline bool checkBit(long long n, int i) { return n & (1LL << i); }
inline long long setBit(long long n, int i) {
  return n | (1LL << i);
  ;
}
inline long long resetBit(long long n, int i) { return n & (~(1LL << i)); }
int dx[] = {0, 0, +1, -1};
int dy[] = {+1, -1, 0, 0};
inline bool EQ(double a, double b) { return fabs(a - b) < 1e-9; }
long long n, m, k;
long long valid(long long val) {
  --val;
  long long ret = 0;
  for (int i = 1; i <= n; ++i) {
    ret += min(m, val / i);
  }
  return ret;
}
int main() {
  cin >> n >> m >> k;
  long long low = 1, high = n * m;
  while (low < high) {
    ;
    long long mid = (low + high + 1) / 2;
    if (valid(mid) >= k)
      high = mid - 1;
    else
      low = mid;
  }
  cout << low;
  return 0;
}
