#include <bits/stdc++.h>
using namespace std;
long long x, y;
long long memo[10000005] = {0};
long long ans(long long a) {
  if (a == 1)
    return x;
  else if (a == 0)
    return 0;
  else if (a < 0)
    return 0;
  long long b, c, d, e, f, g, h;
  if (memo[a] != -1) return memo[a];
  if (a % 2)
    return memo[a] = min(ans(a - 1), ans(a + 1)) + x;
  else
    return memo[a] = ans(a / 2) + min(x * a / 2, y);
}
int main() {
  long long a, b, c, d, e, f, g, h, i, j, k;
  scanf("%lld %lld %lld", &a, &x, &y);
  memset(memo, -1, sizeof memo);
  printf("%lld\n", ans(a));
  return 0;
}
