#include <bits/stdc++.h>
using namespace std;
struct __s {
  __s() {
    srand(time(NULL));
    if (1) {
      ios_base::Init i;
      cin.sync_with_stdio(0);
      cin.tie(0);
    }
  }
  ~__s() {
    if (!1)
      fprintf(stderr, "Execution time: %.3lf s.\n",
              (double)clock() / CLOCKS_PER_SEC);
    long long n;
    cin >> n;
  }
} __S;
long long n, c0, c1;
map<pair<long long, long long>, long long> m;
set<pair<long long, long long> > u;
priority_queue<pair<long long, pair<long long, long long> > > q;
void add(long long x, long long y) {
  if (u.find(make_pair(x, y)) != u.end()) return;
  u.insert(make_pair(x, y));
  q.push(make_pair(-(x * c0 + y * c1), make_pair(x, y)));
}
int main(void) {
  cin >> n >> c0 >> c1;
  if (c0 == 0 || c1 == 0) {
    long long ans = (n - 1) * max(c1, c0);
    cout << ans << '\n';
    return 0;
  }
  m[make_pair(0, 1)]++;
  m[make_pair(1, 0)]++;
  n -= 2;
  add(0, 1);
  add(1, 0);
  long long ans = c0 + c1;
  while (n) {
    long long s = -q.top().first;
    pair<long long, long long> p = q.top().second;
    q.pop();
    m[make_pair(p.first + 1, p.second)] += m[p];
    m[make_pair(p.first, p.second + 1)] += m[p];
    add(p.first + 1, p.second);
    add(p.first, p.second + 1);
    long long k = min(n, m[p]);
    n -= k;
    ans += 1LL * k * (s + c0 + c1);
  }
  cout << ans << '\n';
  return 0;
}
