import sys from functools import lru_cache def main(): input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx +=1 PA = float(input[idx]); idx +=1 PB = float(input[idx]); idx +=1 A = list(map(int, input[idx:idx+N])) idx +=N B = list(map(int, input[idx:idx+N])) card_to_index_A = {a: i for i, a in enumerate(A)} card_to_index_B = {b: i for i, b in enumerate(B)} initial_mask = (1 << N) - 1 @lru_cache(maxsize=None) def get_remaining_a(mask_a): return [a for i in range(N) if (mask_a >> i) & 1 for a in [A[i]]] @lru_cache(maxsize=None) def get_remaining_b(mask_b): return [b for i in range(N) if (mask_b >> i) & 1 for b in [B[i]]] memo = {} def dfs(mask_a, mask_b, score_diff): if mask_a == 0 and mask_b == 0: return 1.0 if score_diff > 0 else 0.0 key = (mask_a, mask_b, score_diff) if key in memo: return memo[key] a_remaining = get_remaining_a(mask_a) b_remaining = get_remaining_b(mask_b) k_a = len(a_remaining) a_probs = {} if k_a >= 1: if k_a ==1: a_card = a_remaining[0] a_probs[a_card] = 1.0 else: a_min = min(a_remaining) a_probs[a_min] = PA remaining_non_min = [c for c in a_remaining if c != a_min] prob = (1.0 - PA) / (k_a -1) for c in remaining_non_min: a_probs[c] = prob else: a_probs = {} k_b = len(b_remaining) b_probs = {} if k_b >=1: if k_b ==1: b_card = b_remaining[0] b_probs[b_card] = 1.0 else: b_min = min(b_remaining) b_probs[b_min] = PB remaining_non_min = [c for c in b_remaining if c != b_min] prob = (1.0 - PB) / (k_b -1) for c in remaining_non_min: b_probs[c] = prob else: b_probs = {} total_p = 0.0 if not a_probs or not b_probs: pass else: for a_card, p_a in a_probs.items(): for b_card, p_b in b_probs.items(): a_idx = card_to_index_A[a_card] new_mask_a = mask_a ^ (1 << a_idx) b_idx = card_to_index_B[b_card] new_mask_b = mask_b ^ (1 << b_idx) a_val = a_card b_val = b_card if a_val > b_val: new_score = score_diff + (a_val + b_val) else: new_score = score_diff - (a_val + b_val) p = p_a * p_b res = dfs(new_mask_a, new_mask_b, new_score) total_p += p * res memo[key] = total_p return total_p result = dfs(initial_mask, initial_mask, 0) print("{0:.15f}".format(result)) if __name__ == "__main__": main()