#include <bits/stdc++.h>
using namespace std;
long long n, x, y;
const long long INF = 9223372036854775807;
long long a[10000000 + 10];
bool usd[10000000 + 10];
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie();
  cin >> n >> x >> y;
  for (unsigned long long i = 0; i <= n; ++i) {
    a[i] = INF;
  }
  a[0] = 0;
  queue<long long> q;
  q.push(0);
  while (!q.empty()) {
    long long v = q.front();
    q.pop();
    if (v > 1 * n + 5 || v < 0 || a[v] > a[n]) continue;
    if (v > 0) {
      if (a[v - 1] > a[v] + x || !usd[v - 1]) {
        usd[v - 1] = 1;
        a[v - 1] = a[v] + x;
        q.push((v - 1));
      }
    }
    if (a[v + 1] > a[v] + x || !usd[v + 1]) {
      usd[v + 1] = 1;
      a[v + 1] = a[v] + x;
      q.push((v + 1));
    }
    if (v * 2 < 1 * n + 5 && y < x * v)
      if (a[v * 2] > a[v] + y || !usd[v * 2]) {
        usd[v * 2] = 1;
        a[v * 2] = a[v] + y;
        q.push((v * 2));
      }
  }
  cout << a[n];
  return 0;
}
