def main(): import sys input_lines = sys.stdin.read().splitlines() N = int(input_lines[0]) p = float(input_lines[1]) q = float(input_lines[2]) max_iterations = 1000000 epsilon = 1e-12 # Initialize previous arrays prev_r = [0.0] * (N + 2) # indexes 0..N+1, using 1..N prev_l = [0.0] * (N + 2) prev_r[1] = 1.0 # initial state: gate 1, right direction for _ in range(max_iterations): curr_r = [0.0] * (N + 2) curr_l = [0.0] * (N + 2) max_diff = 0.0 # Update current arrays for i in range(1, N + 1): # Handle curr_r[i] curr_r[i] = 0.0 if i == 1: curr_r[i] += 1.0 # initial condition if i > 1: curr_r[i] += q * prev_r[i-1] # from i-1, right (pass) curr_r[i] += p * prev_l[i-1] # from i-1, left (flee) # Handle curr_l[i] curr_l[i] = 0.0 if i < N: curr_l[i] += q * prev_l[i+1] # from i+1, left (pass) curr_l[i] += p * prev_r[i+1] # from i+1, right (flee) # Compute max difference for i in range(1, N+1): max_diff = max(max_diff, abs(curr_r[i] - prev_r[i]), abs(curr_l[i] - prev_l[i])) # Check convergence if max_diff < epsilon: break # Swap current to previous for next iteration prev_r, curr_r = curr_r, prev_r prev_l, curr_l = curr_l, prev_l # Calculate the result result = p * prev_r[1] + q * prev_l[1] print("{0:.15f}".format(result)) if __name__ == "__main__": main()