타로의 장보기
시간 제한2초메모리 제한512 MB
물건 가격과 예산이 주어질 때, 서로 다른 두 물건의 합 중 예산을 넘지 않는 가장 큰 값을 구한다.
문제
엄마는 타로에게 처음으로 장을 보게 하기로 했다. 카탈로그에 실린 물건 중에서 마음에 드는 것 두 개를 고르라고 했지만, 물건이 하나같이 탐나서 타로는 두 개를 정하지 못한다. 그래서 엄마가 허락한 금액을 넘지 않으면서 가격의 합이 가장 큰 두 물건을 사기로 했다. 똑같은 물건을 두 개 사면 재미가 없으니 서로 다른 물건 두 개를 고른다.
타로가 물건 두 개를 고르도록 도와라. 모든 물건의 가격 목록이 주어진다. 목록에서 물건 두 개를 고르는 모든 경우 중에서 가격의 합이 허락된 금액을 넘지 않으면서 가장 큰 경우를 찾아 그 합을 구하라. 타로가 사는 물건은 정확히 두 개다. 하나도 아니고 셋 이상도 아니다. 목록에는 가격이 같은 물건이 둘 이상 있기도 하다.
입력
입력은 여러 개의 데이터 집합으로 이루어지며, 각 데이터 집합의 형식은 다음과 같다.
n m
a1 a2 ... an
데이터 집합 하나는 두 줄이다. 첫째 줄에는 물건의 개수 과 지불할 수 있는 최대 금액 이 주어진다. 은 2 이상 1,000 이하의 정수이고, 은 2 이상 2,000,000 이하의 정수다. 둘째 줄에는 물건 개의 가격이 주어진다. (1 ≤ ≤ )는 번째 물건의 가격이며, 1 이상 1,000,000 이하의 정수다.
입력의 끝은 0 두 개가 적힌 줄로 표시한다. 모든 데이터 집합의 을 더한 값은 50,000을 넘지 않는다.
출력
각 데이터 집합마다 가격의 합이 허락된 금액 을 넘지 않는 물건 쌍 중에서 합이 가장 큰 값을 한 줄에 출력한다. 어떤 물건 쌍을 골라도 가격의 합이 을 넘으면 그 값 대신 NONE을 출력한다.