위층과 아래층
시간 제한5초메모리 제한512 MB
사용 횟수 제한 안에서 K개 이상 활동을 고르고 순서대로 배치해 잠든 일리아가 깰 확률을 최소화합니다.
문제
콘스탄틴과 일리야는 같은 집에 산다. 콘스탄틴은 위층에 살고 뛰거나 가구를 옮기며 소리를 내는 활동을 좋아한다. 일리야는 아래층에 살고 잠자기를 좋아한다.
콘스탄틴은 즐거운 저녁을 보내려고 활동을 번 이상 하려 한다. 어젯밤 일리야가 자기를 깨우지 말아 달라고 부탁했고, 콘스탄틴은 그러겠다고 했다. 콘스탄틴은 이 부탁을 곧이곧대로 받아들여서 일리야가 잠든 뒤에 다시 깨어날 확률이 가장 작아지도록 활동을 고른다.
활동 에는 확률 가 붙어 있다. 콘스탄틴이 그 활동을 하면 활동이 끝나는 순간 일리야는 확률 로 깨어 있고 나머지 확률로 잠들어 있다. 활동 직전의 상태는 이 확률을 바꾸지 않는다. 활동 는 최대 번까지 할 수 있다. 그보다 많이 하면 지루해지고, 지루해진 콘스탄틴은 즐거운 저녁을 보내지 못한다.
콘스탄틴은 활동 순서 전체를 미리 정한다. 조건은 다음과 같다.
- 활동을 모두 합쳐 번 이상 한다.
- 활동 는 번을 넘지 않는다.
- 일리야가 한 번이라도 깨어날 확률 가 가장 작다.
일리야는 저녁을 깨어 있는 상태로 시작한다. 어떤 활동이 끝나는 순간 잠들어 있었는데 바로 다음 활동이 끝나는 순간 깨어 있으면, 일리야가 깨어난 것이다. 콘스탄틴은 일리야가 깨어 있는지 잠들어 있는지 알 수 없으므로 저녁을 보내는 도중에 계획을 바꾸지 못한다.
콘스탄틴이 만들 수 있는 가장 작은 를 구하라.
입력
첫 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스의 첫 줄에는 두 정수 과 가 주어진다. 이어지는 개의 줄에는 활동이 하나씩 a/b c 형식으로 주어진다. 그 활동이 끝나는 순간 일리야가 깨어 있을 확률은 이고, 콘스탄틴은 그 활동을 최대 번 할 수 있다.
제한
- 모든 에 대해 이고 이다.
- 한 테스트 케이스의 모든 의 합은 이하이다.
- 그 테스트 케이스의 모든 의 합
출력
각 테스트 케이스마다 Case #x: Q 형식으로 한 줄씩 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 일리야가 깨어날 최소 확률이다. 는 소수점 아래 아홉 자리까지 출력한다.
답은 모두 유리수이고 소수점 아홉 자리 반올림 경계에서 이내에 있는 답은 없으므로, 배정밀도 실수로 계산한 값을 반올림하면 된다.