main = do n <- readLn [c,v] <- map read . words <$> getLine print (report n c v) report n c v = go n c v x0 e0 where x0 = ceiling (logBase 2 (fromIntegral n)) e0 = maxBound :: Int go n c v x e | x == 0 = e | otherwise = go n c v (x - 1) (min e e') where e' = x * (c + v) + (div1 (max 0 (n - (2^x))) (2^(x-1))) * v div1 x y = let (q,r) = divMod x y in q + signum r