V, T, P = map(int, input().split()) def compute_k_last(V, T): if T == 1: return 0 k = V // (T - 1) + 1 if (k - 1) * (T - 1) > V: k -= 1 return k if P == 0: k_last = compute_k_last(V, T) print(V + k_last) else: def compute_k_max_p(V, T): low, high = 1, V + 1 best = 0 while low <= high: mid = (low + high) // 2 required = (mid - 1) * T + 1 if V + mid >= required: best = mid low = mid + 1 else: high = mid - 1 return best k_max_p = compute_k_max_p(V, T) block_time = V + k_max_p total_p = block_time * P k_last = compute_k_last(V, T) total_last = V + k_last print(total_p + total_last)