Mint
시간 제한1초메모리 제한128 MB
동전 두께들이 주어질 때, 서로 다른 네 가지 두께가 나누어떨어지는 길이를 만들 수 있는 길이라 하고, 각 목표 높이에 대해 그 이하에서 가장 가까운 길이와 그 이상에서 가장 가까운 길이를 구한다.
문제
캐나다 왕립 조폐국(Royal Canadian Mint)이 동전을 쌓아 다리를 만드는 디자이너 커피 테이블을 새로 의뢰했다. 모든 테이블은 다리가 네 개이며, 각 다리는 한 종류의 동전만 쌓아 만든 기둥이다. 네 다리는 서로 다른 종류의 동전을 사용해야 하고, 네 다리의 길이는 모두 정확히 같아야 한다.
외국 동전과 기념 주화를 포함해 여러 종류의 동전을 쓸 수 있으며, 각 동전 종류는 고유한 두께를 가진다. 두께가 인 동전을 개 쌓아 만든 다리의 길이는 이고, 여기서 은 동전의 개수(자연수)이다.
어떤 길이 에 대해, 두께가 을 나누는 동전 종류가 서로 다른 것으로 네 개 이상 있으면 그 길이 을 만들 수 있다고 하자. 이때 그 네 다리는 각각 자기 종류의 동전을 정수 개 쌓아 모두 같은 길이 에 도달할 수 있다.
쓸 수 있는 동전 종류들과 원하는 테이블 높이가 주어질 때, 원하는 높이에 가장 가까우면서 만들 수 있는 두 다리 길이, 즉 원하는 높이를 넘지 않는 가장 큰 길이와 원하는 높이보다 작지 않은 가장 작은 길이를 구하라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 두 정수 과 가 있는 줄로 시작한다(, ). 은 쓸 수 있는 동전 종류의 수, 는 설계할 테이블의 수이다.
이어지는 개의 줄에는 각각 동전 한 종류의 두께가 100분의 1밀리미터 단위의 정수로 주어진다. 서로 다른 두 동전 종류가 같은 두께를 가질 수도 있다.
그다음 개의 줄에는 각각 설계할 테이블의 원하는 높이가 역시 100분의 1밀리미터 단위의 정수로 주어진다. 원하는 높이는 항상 만들 수 있는 가장 작은 길이 이상이므로, 구해야 하는 두 값은 언제나 존재한다.
마지막 테스트 케이스 다음에는 0 0만 있는 줄이 오며, 이 줄은 처리하지 않는다.
출력
각 테이블의 원하는 높이에 대해, 주어진 순서대로 한 줄에 두 정수를 공백 하나로 구분하여 출력한다. 먼저 원하는 높이를 넘지 않는, 만들 수 있는 가장 큰 다리 길이를, 그다음 원하는 높이보다 작지 않은, 만들 수 있는 가장 작은 다리 길이를 출력한다.