#include <bits/stdc++.h>
using namespace std;
long long Set(long long n, long long pos) { return (n = n | 1 << pos); }
long long reset(long long N, long long pos) { return N = N & ~(1 << pos); }
bool check(long long N, long long pos) { return (bool)(N & (1 << pos)); }
long long pow(long long a, long long b, long long mod) {
  long long x = 1, y = a;
  while (b > 0) {
    if (b % 2 == 1) {
      x = (x * y);
      if (x > mod) x %= mod;
    }
    y = (y * y);
    if (y > mod) y %= mod;
    b /= 2;
  }
  return x;
}
long long modInverse(long long a, long long m) { return pow(a, m - 2, m); }
long long x, y;
long long n;
long long dp[(int)1e7 + 10];
long long fun(long long idx) {
  dp[0] = 0;
  dp[1] = x;
  for (int i = 2; i <= n; i++) {
    long long sol = INT_MAX;
    if (i % 2 == 0)
      sol = dp[i / 2];
    else
      sol = min(dp[i / 2 + 1] + x, dp[i / 2] + x);
    dp[i] = min(dp[i - 1] + x, sol + y);
  }
  return dp[n];
}
int main() {
  while (cin >> n >> x >> y) {
    cout << fun(0) << endl;
  }
}
