main = do
  li <- getLine
  let [k,a,b] = map read $ words li
  print $ compute k a b

compute :: Int -> Int -> Int -> Int
compute k a b
  | d < 2 = 1 + k
  | True = a + d * p + q
  where
    d = b - a
    (p,q) = divMod (k - a + 1) 2

{-
b-a > 2 なら、なるべく交換で稼ぐ
a-1回叩いてa枚にした後は、残り回数/2回、円との交換を繰り返す
残り回数が奇数回なら、もう一回叩いて+1する
レートがしょぼい場合は、叩き続けて1+kが最大値
-}
