#include <iostream>
using namespace std;
typedef long long ll;
ll n,m,k;
bool check(ll mid)
{
ll res=0;
for(ll i=1;i<=m;i++)
{
res+=min(n,mid/i);
}
//res为小于等于mid的个数
return res>=k;
}
int main()
{
scanf("%lld%lld%lld",&n,&m,&k);
ll l=0,r=n*m+1;
//二分答案 0 1 2 3 4 5 6 7 .. n*m+1
//在二分答案中 求小于等于mid的个数大于等于k 的最小的那个数
while(l+1<r)
{
ll mid=l+r>>1;
if(check(mid))r=mid;
else l=mid;
}
printf("%lld",r);
return 0;
}