1926년 10월 9일자 신문에 미국의 유명 극작가 벤 윌리엄스가 낸 짤막한 문제 하나가 실렸다. 내용은 다음과 같다.
다섯 명의 남자가 무인도에 표류했다. 그들은 첫날 하루 종일 힘을 합쳐 코코넛을 모았다.
그날 밤 첫 번째 사람이 깨어나 코코넛을 세어 보니, 하나를 빼면 정확히 다섯 등분으로 나눌 수 있었다. 그래서 그는 지나가던 원숭이에게 코코넛 하나를 주고, 남은 것을 다섯 등분한 뒤 자기 몫 한 무더기를 몰래 숨기고 다시 잠들었다.
곧이어 두 번째 사람도 깨어나 세어 보니 하나를 빼면 정확히 다섯 등분이 되었고, 똑같이 원숭이에게 하나를 준 뒤 나머지를 다섯 등분하여 자기 몫을 숨기고 잠들었다.
세 번째, 네 번째, 다섯 번째 사람도 차례로 똑같이 행동했다.
다음 날 아침, 다섯 명이 모두 깨어나 남은 코코넛을 세어 보니 이번에는 원숭이에게 줄 필요도 없이 정확히 다섯 등분으로 나눌 수 있었다. 그래서 그들은 남은 것을 다섯 등분하여 한 무더기씩 나누어 가졌다.
그렇다면 그들이 처음에 모은 코코넛은 모두 몇 개였을까?
이 문제의 답은 사실 무수히 많지만, 그중 가장 작은 수는 $3121$개이다.
하지만 우리가 풀 문제는 이것이 아니다. 이 이야기를 거꾸로 뒤집어 생각해 보자.
처음 모은 코코넛이 $N$개였고, 위와 같은 규칙에 따라 $K$명이 코코넛을 모두 나누어 가지는 데 성공했다고 하자. 즉,
이때 $K$는 최대 몇이 될 수 있을까?
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스는 한 줄에 정수 $N$이 주어진다. $N = -1$인 줄은 입력의 끝을 의미하며, 이 줄은 처리하지 않는다.
각 $N$마다 한 줄씩 출력한다.
N coconuts, max(K) people and 1 monkey 형식으로 출력한다. 이때 N은 입력값으로, max(K)는 가능한 최대 인원수로 바꾸어 쓴다.N coconuts, no solution을 출력한다.