#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(I,A,B) for(int I = (A); I < (B); ++I) #define CLR(mat) memset(mat, 0, sizeof(mat)) typedef long long ll; int main() { int N, C, V; cin >> N >> C >> V; ll dp[100000][25]; FOR(i,0,100000) FOR(j,0,25) dp[i][j] = 1e9; dp[0][0] = 0; FOR(i,0,N) { FOR(j,0,20) { if(dp[i][j] == 1e9) continue; // コピー dp[i][j+1] = min(dp[i][j+1], dp[i][j] + V); // はる if(i+pow(2, j) > N) continue; dp[i+int(pow(2, j))][j] = min(dp[i+int(pow(2, j))][j], dp[i][j] + C); } } ll ans = 1e9; FOR(i,N,100000) { FOR(j,0,25) ans = min(ans, dp[i][j]); } cout << ans << endl; return 0; }