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

using namespace std;

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

int n, a, b;

int get( int k ) {
  if (k == 0) {
    return -inf;
  } else if (k == 1) {
    return 0;
  } else {
//    fprintf(stderr, "get(k=%d)\n", k);
    assert(k >= 0);
    int res = inf;
    for (int x = 1; x <= k; x++) {
      if (x % 2 == 1 && k == n) {
        continue;
      }
      res = min(res, max(a + get(k - x), b + get((x + 1) / 2)));
    }
    return res;
  }
}

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

  assert(scanf("%d%d%d", &n, &a, &b) == 3);
  printf("%d\n", get(n));

  return 0;
}
