def floor_sum(n,m,a,b): res = 0 while True: res += ((n-1)*n*(a//m)//2) + (b//m)*n a %= m b %= m if a*n+b <= m: return res Y = (a*n+b)//m n,m,a,b = Y,a,m, a*n + b - m*Y """ ax + by <= t, x >= 0, y >= 0 をみたす x,y の個数 """ def points_in_triange(a,b,t): return floor_sum(1+t//a,b,a,t-t//a*a) + t//a + 1 a,b,t = map(int,input().split()) r = points_in_triange(a,b,t-1) ng = t-1 ok = 10**12 while ok-ng > 1: mid = (ok+ng)//2 if r < points_in_triange(a,b,mid): ok = mid else: ng = mid print(ok)