#include <cstdio>
#include <cassert>
#include <algorithm>

using namespace std;

const int maxN = 100000;
const int inf = 1e9;

int n, a, b, f[maxN + 1];

int main() {
  assert(freopen("apricot.in", "r", stdin));
  assert(freopen("apricot.out", "w", stdout));

  assert(scanf("%d%d%d", &n, &a, &b) == 3);
  f[0] = -inf;
  f[1] = 0;
  for (int i = 2; i <= n; i++) {
    f[i] = inf;
    for (int j = 1; j <= i; j++) {
      f[i] = min(f[i], max(a + f[i - j], b + f[(j + 1) / 2]));
    }
    assert(f[i] >= f[i - 1]);
  }
  int ans = inf;
  for (int i = 1; i <= n - (n % 2); i++) {
    ans = min(ans, max(a + f[n - i], b + f[(i + 1) / 2]));
  }
  printf("%d\n", ans);

  return 0;
}
