카드 등급 부호화

아직 제출이 없습니다시간 제한3초메모리 제한128 MB

문제

한 카드 게임에서는 골드를 내고 카드를 한 장씩 뽑는다. 뽑은 카드의 등급은 다음 네 가지 중 하나이고, 어느 등급이 나올지는 무작위로 정해진다.

  • 일반 카드
  • 희귀 카드
  • 영웅 카드
  • 전설 카드

샤바칸은 골드를 모아 카드 NN장을 뽑는다. 샤바칸은 뽑은 순서대로 적은 등급 NN개짜리 나열을 이진 문자열 하나로 나타내려 한다. 가능한 등급 나열은 4N4^N가지이므로 이 4N4^N가지에 이진 문자열을 하나씩 대응시켜야 한다. 문자열이 어디서 끝나는지 알아볼 수 있어야 하므로, 대응시킨 4N4^N개의 문자열 중 어느 것도 다른 문자열의 접두사가 되어서는 안 된다.

카드 한 장의 등급 확률분포가 주어지면 등급 나열마다 확률이 정해진다. 따라서 대응 방법을 하나 고르면 샤바칸이 쓰게 될 이진 문자열의 길이의 기댓값도 정해진다. 이 기댓값은 대응 방법에 따라 달라진다.

등급 확률분포가 주어질 때, 이진 문자열 길이의 기댓값을 가장 작게 만드는 대응 방법에서의 그 기댓값을 구하시오.

입력

첫째 줄에 뽑는 카드의 수 NN (1N201 \le N \le 20)이 주어진다.

둘째 줄에 카드 한 장이 일반, 희귀, 영웅, 전설 등급으로 나올 확률 PCP_C, PRP_R, PEP_E, PLP_L이 공백으로 구분되어 주어진다. 네 값은 모두 0 이상 1 이하이고 PC+PR+PE+PL=1P_C + P_R + P_E + P_L = 1이다. 확률이 0인 등급이 있어도 그 등급이 들어간 나열에 이진 문자열을 대응시켜야 한다.

출력

첫째 줄에 이진 문자열 길이의 기댓값의 최솟값을 소수점 아래 여섯째 자리까지 반올림하여 출력한다.