당신은 방금 FAMI 알고리즘(이전 과제 「지도 생성기」를 참고하세요) 연구를 마쳤습니다. 스스로가 매우 자랑스럽고 이번 달 보너스까지 기대하고 있습니다. 상사인 Dean이 잠깐 사무실로 오라고 합니다. 감사 인사와 승진을 기대했지만…
「이게 뭐죠?」 Dean이 당신의 최신 보고서를 보여 주며 묻습니다.
「음, 그게, 이건 제 FAMI 알고리즘 연구 결과인데요…」 하고 답합니다. 곧 승진할 거라는 꿈은 그저 꿈이었나 봅니다. 하지만 보고서의 무엇이 잘못됐는지는 여전히 모르겠습니다.
「나도 읽을 줄은 압니다.」 Dean이 말을 잇습니다. 「내가 말하는 건 절대 오차예요. 왜 이렇게 큰 거죠? 더 정확한 결과가 필요합니다!」
상사와 다툴 때 가장 좋은 무기는 침묵입니다. 그래서 보너스와 승진 대신, 당신은 프로그램을 다시 작성해야 합니다.
FAMI 알고리즘은 다음과 같이 지도를 만듭니다. 지도에는 N개의 장소가 있습니다. 서로 다른 두 장소로 이루어진 모든 쌍(총 (2N)개) 각각에 대해, 서로 독립적으로 확률 P로 그 두 장소를 잇는 양방향 도로를 놓습니다. 만들어진 지도가 「연결되어 있다」는 것은 임의의 두 장소 사이를 도로만 이용해 오갈 수 있다는 뜻입니다. FAMI가 연결된 지도를 생성할 확률을 구하세요.
입력은 두 줄로 이루어집니다. 첫째 줄에는 정수 N (1≤N≤20)이 주어지고, 둘째 줄에는 실수 P (0≤P≤1)가 주어집니다.
FAMI가 연결된 지도를 생성할 확률을, 소수점 아래 정확히 10자리까지 반올림하여 한 줄에 출력하세요.