#include <bits/stdc++.h>
long long n, x, y, dp[10000010];
inline long long min(long long a, long long b) { return a < b ? a : b; }
signed main() {
  scanf("%lld%lld%lld", &n, &x, &y);
  dp[1] = x, dp[2] = min(x + y, x + x);
  for (long long i = 2; i <= n; i++)
    if (i & 1)
      dp[i] = min(dp[i - 1] + x, min(dp[i >> 1], dp[(i + 1) >> 1]) + x + y);
    else
      dp[i] = min(dp[i - 1] + x, dp[i >> 1] + y);
  printf("%lld\n", dp[n]);
  return 0;
}
