#include <bits/stdc++.h>
using namespace std;
long long n, x, y;
set<long long> res;
void bfs() {
  vector<long long> cost(n * 2 + 5, 1e18);
  cost[0] = 0;
  queue<pair<long long, long long>> q;
  q.push({0, 0});
  long long sz = 1;
  for (; q.size(); sz = q.size()) {
    while (sz--) {
      auto cur = q.front();
      q.pop();
      long long pos = cur.first, Cost = cur.second;
      if (pos == n) {
        res.insert(Cost);
        continue;
      }
      if (pos + 1 <= n * 2 && Cost + x < cost[pos + 1]) {
        cost[pos + 1] = Cost + x;
        q.push({pos + 1, Cost + x});
      }
      if (pos - 1 >= 0 && Cost + x < cost[pos - 1]) {
        cost[pos - 1] = Cost + x;
        q.push({pos - 1, Cost + x});
      }
      if (pos * 2 <= n * 2 && Cost + y < Cost + pos * x &&
          Cost + y < cost[pos * 2]) {
        cost[pos * 2] = Cost + y;
        q.push({pos * 2, Cost + y});
      }
    }
  }
}
int main() {
  cin >> n >> x >> y;
  bfs();
  cout << *res.begin();
  return 0;
}
