#include <bits/stdc++.h>
using namespace std;
vector<long long>::iterator i;
map<long long, long long> mp, cm;
vector<long long> v, odd[50], even[50];
map<long long, long long>::iterator it, it1, titr;
priority_queue<pair<long long, long long>, vector<pair<long long, long long> > >
    q;
long long dp[10000010], n, x, y;
long long solve(long long pos) {
  if (pos == 1)
    return x;
  else if (pos > n)
    return x * (pos - n);
  else if (dp[pos] != 0)
    return dp[pos];
  else {
    if (pos % 2 == 0) {
      return dp[pos] = min(solve(pos / 2) + y, solve(pos - 1) + x);
    } else {
      return dp[pos] = min(solve(pos - 1) + x, solve((pos + 1) / 2) + x + y);
    }
  }
}
int main() {
  cin >> n >> x >> y;
  cout << solve(n) << "\n";
}
