# 2次元dpでできる # dp[i個目まで見て][i個目が+1のとき0、i個目が-1のとき1]の最小値 N, A, B = map(int, input().split()) INF = 10**20 dp = [[INF]*2 for i in range(N+1)] dp[0][0] = 0 dp[0][1] = 0 for i in range(1, N+1): if i == 1: # +1のとき dp[i][0] = min(dp[i][0], dp[i-1][0]-B, dp[i-1][1]-B) # -1のとき dp[i][1] = min(dp[i][1], dp[i-1][0]+B, dp[i-1][1]+B) elif i > 1: # +1のとき dp[i][0] = min(dp[i][0], dp[i-1][0]+A-B, dp[i-1][1]-A-B) # -1のとき dp[i][1] = min(dp[i][1], dp[i-1][0]-A+B, dp[i-1][1]+A+B) #print(dp[i]) ans = min(dp[N]) print(ans)