오래된 낚시터

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

문제

낚시터와 어종은 미래에도 계속 유지되도록 신중히 관리해야 하는 자원이다. 이를 위해 어떤 강에는 어종별 개체 수를 고려하여 어획 한도가 정해져 있다. 물고기마다 정해진 점수가 있으며, 잡은 물고기의 점수 합계는 그 강에 허용된 점수를 넘지 않아야 한다.

예를 들어 브라운 송어(Brown Trout)는 한 마리에 2점, 노던 파이크(Northern Pike)는 한 마리에 5점, 옐로 피커렐(Yellow Pickerel)은 한 마리에 2점이고, 허용된 총점은 12점 이하라고 하자. 브라운 송어 3마리와 노던 파이크 1마리($3 \times 2 + 1 \times 5 = 11$점)는 허용되는 어획의 한 예이며, 이 밖에도 여러 조합이 허용된다.

강에 허용된 점수가 주어졌을 때, 물고기를 한 마리 이상 잡는 낚시꾼이 한도를 넘지 않고 잡을 수 있는 서로 다른 조합이 몇 가지인지 구하고, 그 조합을 모두 나열하는 프로그램을 작성하라.

입력

네 개의 정수가 한 줄에 하나씩, 다음 순서로 주어진다: 브라운 송어의 점수, 노던 파이크의 점수, 옐로 피커렐의 점수, 그리고 그 강에 허용된 총점.

각 정수는 0보다 크고 100 이하이다.

출력

물고기를 한 마리 이상 포함하며 점수 합계가 허용 한도를 넘지 않는 서로 다른 어획 조합을 모두 출력한다. 각 조합은 한 줄에 다음 형식으로 출력한다.

<a> Brown Trout, <b> Northern Pike, <c> Yellow Pickerel

여기서 <a>, <b>, <c>는 각각 그 조합에 포함된 브라운 송어, 노던 파이크, 옐로 피커렐의 마리 수이다.

조합은 옐로 피커렐의 수를 기준으로 오름차순으로 나열하고, 같으면 노던 파이크의 수를 기준으로 오름차순으로, 그다음에는 브라운 송어의 수를 기준으로 오름차순으로 나열한다.

모든 조합을 출력한 뒤, 마지막 줄에 다음을 출력한다.

Number of ways to catch fish: <n>

여기서 <n>은 유효한 서로 다른 조합의 총 개수이다. 가능한 조합이 하나도 없으면 <n>이 0인 이 마지막 줄만 출력한다.